/contrib/sdk/sources/SDL-1.2.2/SDL_draw/AUTHORS |
---|
0,0 → 1,3 |
Mario Palomo Torrero <mpalomo@ihman.com> |
Jose M. de la Huerga Fernández |
Pepe González Mora |
/contrib/sdk/sources/SDL-1.2.2/SDL_draw/COPYING |
---|
0,0 → 1,437 |
GNU LIBRARY GENERAL PUBLIC LICENSE |
Version 2, June 1991 |
Copyright (C) 1991 Free Software Foundation, Inc. |
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
Everyone is permitted to copy and distribute verbatim copies |
of this license document, but changing it is not allowed. |
[This is the first released version of the library GPL. It is |
numbered 2 because it goes with version 2 of the ordinary GPL.] |
Preamble |
The licenses for most software are designed to take away your |
freedom to share and change it. By contrast, the GNU General Public |
Licenses are intended to guarantee your freedom to share and change |
free software--to make sure the software is free for all its users. |
This license, the Library General Public License, applies to some |
specially designated Free Software Foundation software, and to any |
other libraries whose authors decide to use it. You can use it for |
your libraries, too. |
When we speak of free software, we are referring to freedom, not |
price. Our General Public Licenses are designed to make sure that you |
have the freedom to distribute copies of free software (and charge for |
this service if you wish), that you receive source code or can get it |
if you want it, that you can change the software or use pieces of it |
in new free programs; and that you know you can do these things. |
To protect your rights, we need to make restrictions that forbid |
anyone to deny you these rights or to ask you to surrender the rights. |
These restrictions translate to certain responsibilities for you if |
you distribute copies of the library, or if you modify it. |
For example, if you distribute copies of the library, whether gratis |
or for a fee, you must give the recipients all the rights that we gave |
you. You must make sure that they, too, receive or can get the source |
code. If you link a program with the library, you must provide |
complete object files to the recipients so that they can relink them |
with the library, after making changes to the library and recompiling |
it. And you must show them these terms so they know their rights. |
Our method of protecting your rights has two steps: (1) copyright |
the library, and (2) offer you this license which gives you legal |
permission to copy, distribute and/or modify the library. |
Also, for each distributor's protection, we want to make certain |
that everyone understands that there is no warranty for this free |
library. If the library is modified by someone else and passed on, we |
want its recipients to know that what they have is not the original |
version, so that any problems introduced by others will not reflect on |
the original authors' reputations. |
Finally, any free program is threatened constantly by software |
patents. We wish to avoid the danger that companies distributing free |
software will individually obtain patent licenses, thus in effect |
transforming the program into proprietary software. To prevent this, |
we have made it clear that any patent must be licensed for everyone's |
free use or not licensed at all. |
Most GNU software, including some libraries, is covered by the ordinary |
GNU General Public License, which was designed for utility programs. This |
license, the GNU Library General Public License, applies to certain |
designated libraries. This license is quite different from the ordinary |
one; be sure to read it in full, and don't assume that anything in it is |
the same as in the ordinary license. |
The reason we have a separate public license for some libraries is that |
they blur the distinction we usually make between modifying or adding to a |
program and simply using it. Linking a program with a library, without |
changing the library, is in some sense simply using the library, and is |
analogous to running a utility program or application program. However, in |
a textual and legal sense, the linked executable is a combined work, a |
derivative of the original library, and the ordinary General Public License |
treats it as such. |
Because of this blurred distinction, using the ordinary General |
Public License for libraries did not effectively promote software |
sharing, because most developers did not use the libraries. We |
concluded that weaker conditions might promote sharing better. |
However, unrestricted linking of non-free programs would deprive the |
users of those programs of all benefit from the free status of the |
libraries themselves. This Library General Public License is intended to |
permit developers of non-free programs to use free libraries, while |
preserving your freedom as a user of such programs to change the free |
libraries that are incorporated in them. (We have not seen how to achieve |
this as regards changes in header files, but we have achieved it as regards |
changes in the actual functions of the Library.) The hope is that this |
will lead to faster development of free libraries. |
The precise terms and conditions for copying, distribution and |
modification follow. Pay close attention to the difference between a |
"work based on the library" and a "work that uses the library". The |
former contains code derived from the library, while the latter only |
works together with the library. |
Note that it is possible for a library to be covered by the ordinary |
General Public License rather than by this special one. |
GNU LIBRARY GENERAL PUBLIC LICENSE |
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION |
0. This License Agreement applies to any software library which |
contains a notice placed by the copyright holder or other authorized |
party saying it may be distributed under the terms of this Library |
General Public License (also called "this License"). Each licensee is |
addressed as "you". |
A "library" means a collection of software functions and/or data |
prepared so as to be conveniently linked with application programs |
(which use some of those functions and data) to form executables. |
The "Library", below, refers to any such software library or work |
which has been distributed under these terms. A "work based on the |
Library" means either the Library or any derivative work under |
copyright law: that is to say, a work containing the Library or a |
portion of it, either verbatim or with modifications and/or translated |
straightforwardly into another language. (Hereinafter, translation is |
included without limitation in the term "modification".) |
"Source code" for a work means the preferred form of the work for |
making modifications to it. For a library, complete source code means |
all the source code for all modules it contains, plus any associated |
interface definition files, plus the scripts used to control compilation |
and installation of the library. |
Activities other than copying, distribution and modification are not |
covered by this License; they are outside its scope. The act of |
running a program using the Library is not restricted, and output from |
such a program is covered only if its contents constitute a work based |
on the Library (independent of the use of the Library in a tool for |
writing it). Whether that is true depends on what the Library does |
and what the program that uses the Library does. |
1. You may copy and distribute verbatim copies of the Library's |
complete source code as you receive it, in any medium, provided that |
you conspicuously and appropriately publish on each copy an |
appropriate copyright notice and disclaimer of warranty; keep intact |
all the notices that refer to this License and to the absence of any |
warranty; and distribute a copy of this License along with the |
Library. |
You may charge a fee for the physical act of transferring a copy, |
and you may at your option offer warranty protection in exchange for a |
fee. |
2. You may modify your copy or copies of the Library or any portion |
of it, thus forming a work based on the Library, and copy and |
distribute such modifications or work under the terms of Section 1 |
above, provided that you also meet all of these conditions: |
a) The modified work must itself be a software library. |
b) You must cause the files modified to carry prominent notices |
stating that you changed the files and the date of any change. |
c) You must cause the whole of the work to be licensed at no |
charge to all third parties under the terms of this License. |
d) If a facility in the modified Library refers to a function or a |
table of data to be supplied by an application program that uses |
the facility, other than as an argument passed when the facility |
is invoked, then you must make a good faith effort to ensure that, |
in the event an application does not supply such function or |
table, the facility still operates, and performs whatever part of |
its purpose remains meaningful. |
(For example, a function in a library to compute square roots has |
a purpose that is entirely well-defined independent of the |
application. Therefore, Subsection 2d requires that any |
application-supplied function or table used by this function must |
be optional: if the application does not supply it, the square |
root function must still compute square roots.) |
These requirements apply to the modified work as a whole. If |
identifiable sections of that work are not derived from the Library, |
and can be reasonably considered independent and separate works in |
themselves, then this License, and its terms, do not apply to those |
sections when you distribute them as separate works. But when you |
distribute the same sections as part of a whole which is a work based |
on the Library, the distribution of the whole must be on the terms of |
this License, whose permissions for other licensees extend to the |
entire whole, and thus to each and every part regardless of who wrote |
it. |
Thus, it is not the intent of this section 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 or |
collective works based on the Library. |
In addition, mere aggregation of another work not based on the Library |
with the Library (or with a work based on the Library) on a volume of |
a storage or distribution medium does not bring the other work under |
the scope of this License. |
3. You may opt to apply the terms of the ordinary GNU General Public |
License instead of this License to a given copy of the Library. To do |
this, you must alter all the notices that refer to this License, so |
that they refer to the ordinary GNU General Public License, version 2, |
instead of to this License. (If a newer version than version 2 of the |
ordinary GNU General Public License has appeared, then you can specify |
that version instead if you wish.) Do not make any other change in |
these notices. |
Once this change is made in a given copy, it is irreversible for |
that copy, so the ordinary GNU General Public License applies to all |
subsequent copies and derivative works made from that copy. |
This option is useful when you wish to copy part of the code of |
the Library into a program that is not a library. |
4. You may copy and distribute the Library (or a portion or |
derivative of it, under Section 2) in object code or executable form |
under the terms of Sections 1 and 2 above provided that you accompany |
it with the complete corresponding machine-readable source code, which |
must be distributed under the terms of Sections 1 and 2 above on a |
medium customarily used for software interchange. |
If distribution of 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 satisfies the requirement to |
distribute the source code, even though third parties are not |
compelled to copy the source along with the object code. |
5. A program that contains no derivative of any portion of the |
Library, but is designed to work with the Library by being compiled or |
linked with it, is called a "work that uses the Library". Such a |
work, in isolation, is not a derivative work of the Library, and |
therefore falls outside the scope of this License. |
However, linking a "work that uses the Library" with the Library |
creates an executable that is a derivative of the Library (because it |
contains portions of the Library), rather than a "work that uses the |
library". The executable is therefore covered by this License. |
Section 6 states terms for distribution of such executables. |
When a "work that uses the Library" uses material from a header file |
that is part of the Library, the object code for the work may be a |
derivative work of the Library even though the source code is not. |
Whether this is true is especially significant if the work can be |
linked without the Library, or if the work is itself a library. The |
threshold for this to be true is not precisely defined by law. |
If such an object file uses only numerical parameters, data |
structure layouts and accessors, and small macros and small inline |
functions (ten lines or less in length), then the use of the object |
file is unrestricted, regardless of whether it is legally a derivative |
work. (Executables containing this object code plus portions of the |
Library will still fall under Section 6.) |
Otherwise, if the work is a derivative of the Library, you may |
distribute the object code for the work under the terms of Section 6. |
Any executables containing that work also fall under Section 6, |
whether or not they are linked directly with the Library itself. |
6. As an exception to the Sections above, you may also compile or |
link a "work that uses the Library" with the Library to produce a |
work containing portions of the Library, and distribute that work |
under terms of your choice, provided that the terms permit |
modification of the work for the customer's own use and reverse |
engineering for debugging such modifications. |
You must give prominent notice with each copy of the work that the |
Library is used in it and that the Library and its use are covered by |
this License. You must supply a copy of this License. If the work |
during execution displays copyright notices, you must include the |
copyright notice for the Library among them, as well as a reference |
directing the user to the copy of this License. Also, you must do one |
of these things: |
a) Accompany the work with the complete corresponding |
machine-readable source code for the Library including whatever |
changes were used in the work (which must be distributed under |
Sections 1 and 2 above); and, if the work is an executable linked |
with the Library, with the complete machine-readable "work that |
uses the Library", as object code and/or source code, so that the |
user can modify the Library and then relink to produce a modified |
executable containing the modified Library. (It is understood |
that the user who changes the contents of definitions files in the |
Library will not necessarily be able to recompile the application |
to use the modified definitions.) |
b) Accompany the work with a written offer, valid for at |
least three years, to give the same user the materials |
specified in Subsection 6a, above, for a charge no more |
than the cost of performing this distribution. |
c) If distribution of the work is made by offering access to copy |
from a designated place, offer equivalent access to copy the above |
specified materials from the same place. |
d) Verify that the user has already received a copy of these |
materials or that you have already sent this user a copy. |
For an executable, the required form of the "work that uses the |
Library" must include any data and utility programs needed for |
reproducing the executable from it. However, as a special exception, |
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. |
It may happen that this requirement contradicts the license |
restrictions of other proprietary libraries that do not normally |
accompany the operating system. Such a contradiction means you cannot |
use both them and the Library together in an executable that you |
distribute. |
7. You may place library facilities that are a work based on the |
Library side-by-side in a single library together with other library |
facilities not covered by this License, and distribute such a combined |
library, provided that the separate distribution of the work based on |
the Library and of the other library facilities is otherwise |
permitted, and provided that you do these two things: |
a) Accompany the combined library with a copy of the same work |
based on the Library, uncombined with any other library |
facilities. This must be distributed under the terms of the |
Sections above. |
b) Give prominent notice with the combined library of the fact |
that part of it is a work based on the Library, and explaining |
where to find the accompanying uncombined form of the same work. |
8. You may not copy, modify, sublicense, link with, or distribute |
the Library except as expressly provided under this License. Any |
attempt otherwise to copy, modify, sublicense, link with, or |
distribute the Library 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. |
9. You are not required to accept this License, since you have not |
signed it. However, nothing else grants you permission to modify or |
distribute the Library or its derivative works. These actions are |
prohibited by law if you do not accept this License. Therefore, by |
modifying or distributing the Library (or any work based on the |
Library), you indicate your acceptance of this License to do so, and |
all its terms and conditions for copying, distributing or modifying |
the Library or works based on it. |
10. Each time you redistribute the Library (or any work based on the |
Library), the recipient automatically receives a license from the |
original licensor to copy, distribute, link with or modify the Library |
subject to these terms and conditions. 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. |
11. If, as a consequence of a court judgment or allegation of patent |
infringement or for any other reason (not limited to patent issues), |
conditions are imposed on you (whether by court order, agreement or |
otherwise) that contradict the conditions of this License, they do not |
excuse you from the conditions of this License. If you cannot |
distribute so as to satisfy simultaneously your obligations under this |
License and any other pertinent obligations, then as a consequence you |
may not distribute the Library at all. For example, if a patent |
license would not permit royalty-free redistribution of the Library by |
all those who receive copies directly or indirectly through you, then |
the only way you could satisfy both it and this License would be to |
refrain entirely from distribution of the Library. |
If any portion of this section is held invalid or unenforceable under any |
particular circumstance, the balance of the section is intended to apply, |
and the section as a whole is intended to apply in other circumstances. |
It is not the purpose of this section to induce you to infringe any |
patents or other property right claims or to contest validity of any |
such claims; this section has the sole purpose of protecting the |
integrity of the free software distribution system which is |
implemented by public license practices. Many people have made |
generous contributions to the wide range of software distributed |
through that system in reliance on consistent application of that |
system; it is up to the author/donor to decide if he or she is willing |
to distribute software through any other system and a licensee cannot |
impose that choice. |
This section is intended to make thoroughly clear what is believed to |
be a consequence of the rest of this License. |
12. If the distribution and/or use of the Library is restricted in |
certain countries either by patents or by copyrighted interfaces, the |
original copyright holder who places the Library 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. |
13. The Free Software Foundation may publish revised and/or new |
versions of the Library General Public License from time to time. |
Such new versions will be similar in spirit to the present version, |
but may differ in detail to address new problems or concerns. |
Each version is given a distinguishing version number. If the Library |
specifies a version number of this License which applies to it and |
"any later version", you have the option of following the terms and |
conditions either of that version or of any later version published by |
the Free Software Foundation. If the Library does not specify a |
license version number, you may choose any version ever published by |
the Free Software Foundation. |
14. If you wish to incorporate parts of the Library into other free |
programs whose distribution conditions are incompatible with these, |
write to the author to ask for permission. For software which is |
copyrighted by the Free Software Foundation, write to the Free |
Software Foundation; we sometimes make exceptions for this. Our |
decision will be guided by the two goals of preserving the free status |
of all derivatives of our free software and of promoting the sharing |
and reuse of software generally. |
NO WARRANTY |
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO |
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. |
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR |
OTHER PARTIES PROVIDE THE LIBRARY "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 |
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME |
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. |
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN |
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY |
AND/OR REDISTRIBUTE THE LIBRARY 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 |
LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF |
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH |
DAMAGES. |
END OF TERMS AND CONDITIONS |
/contrib/sdk/sources/SDL-1.2.2/SDL_draw/INSTALL |
---|
0,0 → 1,182 |
Basic Installation |
================== |
These are generic installation instructions. |
The `configure' shell script attempts to guess correct values for |
various system-dependent variables used during compilation. It uses |
those values to create a `Makefile' in each directory of the package. |
It may also create one or more `.h' files containing system-dependent |
definitions. Finally, it creates a shell script `config.status' that |
you can run in the future to recreate the current configuration, a file |
`config.cache' that saves the results of its tests to speed up |
reconfiguring, and a file `config.log' containing compiler output |
(useful mainly for debugging `configure'). |
If you need to do unusual things to compile the package, please try |
to figure out how `configure' could check whether to do them, and mail |
diffs or instructions to the address given in the `README' so they can |
be considered for the next release. If at some point `config.cache' |
contains results you don't want to keep, you may remove or edit it. |
The file `configure.in' is used to create `configure' by a program |
called `autoconf'. You only need `configure.in' if you want to change |
it or regenerate `configure' using a newer version of `autoconf'. |
The simplest way to compile this package is: |
1. `cd' to the directory containing the package's source code and type |
`./configure' to configure the package for your system. If you're |
using `csh' on an old version of System V, you might need to type |
`sh ./configure' instead to prevent `csh' from trying to execute |
`configure' itself. |
Running `configure' takes awhile. While running, it prints some |
messages telling which features it is checking for. |
2. Type `make' to compile the package. |
3. Optionally, type `make check' to run any self-tests that come with |
the package. |
4. Type `make install' to install the programs and any data files and |
documentation. |
5. You can remove the program binaries and object files from the |
source code directory by typing `make clean'. To also remove the |
files that `configure' created (so you can compile the package for |
a different kind of computer), type `make distclean'. There is |
also a `make maintainer-clean' target, but that is intended mainly |
for the package's developers. If you use it, you may have to get |
all sorts of other programs in order to regenerate files that came |
with the distribution. |
Compilers and Options |
===================== |
Some systems require unusual options for compilation or linking that |
the `configure' script does not know about. You can give `configure' |
initial values for variables by setting them in the environment. Using |
a Bourne-compatible shell, you can do that on the command line like |
this: |
CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure |
Or on systems that have the `env' program, you can do it like this: |
env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure |
Compiling For Multiple Architectures |
==================================== |
You can compile the package for more than one kind of computer at the |
same time, by placing the object files for each architecture in their |
own directory. To do this, you must use a version of `make' that |
supports the `VPATH' variable, such as GNU `make'. `cd' to the |
directory where you want the object files and executables to go and run |
the `configure' script. `configure' automatically checks for the |
source code in the directory that `configure' is in and in `..'. |
If you have to use a `make' that does not supports the `VPATH' |
variable, you have to compile the package for one architecture at a time |
in the source code directory. After you have installed the package for |
one architecture, use `make distclean' before reconfiguring for another |
architecture. |
Installation Names |
================== |
By default, `make install' will install the package's files in |
`/usr/local/bin', `/usr/local/man', etc. You can specify an |
installation prefix other than `/usr/local' by giving `configure' the |
option `--prefix=PATH'. |
You can specify separate installation prefixes for |
architecture-specific files and architecture-independent files. If you |
give `configure' the option `--exec-prefix=PATH', the package will use |
PATH as the prefix for installing programs and libraries. |
Documentation and other data files will still use the regular prefix. |
In addition, if you use an unusual directory layout you can give |
options like `--bindir=PATH' to specify different values for particular |
kinds of files. Run `configure --help' for a list of the directories |
you can set and what kinds of files go in them. |
If the package supports it, you can cause programs to be installed |
with an extra prefix or suffix on their names by giving `configure' the |
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. |
Optional Features |
================= |
Some packages pay attention to `--enable-FEATURE' options to |
`configure', where FEATURE indicates an optional part of the package. |
They may also pay attention to `--with-PACKAGE' options, where PACKAGE |
is something like `gnu-as' or `x' (for the X Window System). The |
`README' should mention any `--enable-' and `--with-' options that the |
package recognizes. |
For packages that use the X Window System, `configure' can usually |
find the X include and library files automatically, but if it doesn't, |
you can use the `configure' options `--x-includes=DIR' and |
`--x-libraries=DIR' to specify their locations. |
Specifying the System Type |
========================== |
There may be some features `configure' can not figure out |
automatically, but needs to determine by the type of host the package |
will run on. Usually `configure' can figure that out, but if it prints |
a message saying it can not guess the host type, give it the |
`--host=TYPE' option. TYPE can either be a short name for the system |
type, such as `sun4', or a canonical name with three fields: |
CPU-COMPANY-SYSTEM |
See the file `config.sub' for the possible values of each field. If |
`config.sub' isn't included in this package, then this package doesn't |
need to know the host type. |
If you are building compiler tools for cross-compiling, you can also |
use the `--target=TYPE' option to select the type of system they will |
produce code for and the `--build=TYPE' option to select the type of |
system on which you are compiling the package. |
Sharing Defaults |
================ |
If you want to set default values for `configure' scripts to share, |
you can create a site shell script called `config.site' that gives |
default values for variables like `CC', `cache_file', and `prefix'. |
`configure' looks for `PREFIX/share/config.site' if it exists, then |
`PREFIX/etc/config.site' if it exists. Or, you can set the |
`CONFIG_SITE' environment variable to the location of the site script. |
A warning: not all `configure' scripts look for a site script. |
Operation Controls |
================== |
`configure' recognizes the following options to control how it |
operates. |
`--cache-file=FILE' |
Use and save the results of the tests in FILE instead of |
`./config.cache'. Set FILE to `/dev/null' to disable caching, for |
debugging `configure'. |
`--help' |
Print a summary of the options to `configure', and exit. |
`--quiet' |
`--silent' |
`-q' |
Do not print messages saying which checks are being made. To |
suppress all normal output, redirect it to `/dev/null' (any error |
messages will still be shown). |
`--srcdir=DIR' |
Look for the package's source code in directory DIR. Usually |
`configure' can determine that directory automatically. |
`--version' |
Print the version of Autoconf used to generate the `configure' |
script, and exit. |
`configure' also accepts some other, not widely useful, options. |
/contrib/sdk/sources/SDL-1.2.2/SDL_draw/Makefile |
---|
0,0 → 1,5 |
OUTFILE = ../lib/libSDLdraw.a |
OBJS = src/SDL_draw.o |
CFLAGS = -Iinclude -I. -I../include |
include $(MENUETDEV)/makefiles/Makefile_for_lib |
/contrib/sdk/sources/SDL-1.2.2/SDL_draw/NEWS |
---|
--- README (nonexistent) |
+++ README (revision 5131) |
@@ -0,0 +1,117 @@ |
+ |
+SDL_draw 1.2.1 |
+~~~~~~~~~~~~~~ |
+The latest version of this library is available from: |
+http://sdl-draw.sourceforge.net/ |
+ |
+This is a simple library to draw basic elements, like points, lines and |
+circles, on SDL surfaces. |
+ |
+Library API |
+~~~~~~~~~~~ |
+#include "SDL_draw.h" |
+ |
+//IMPORTANT: Call this function AFTER the call to 'SDL_SetVideoMode': |
+Draw_Init(); //Register the functions for current bpp |
+ |
+ |
+void Draw_Pixel(SDL_Surface *super, |
+ Sint16 x, Sint16 y, Uint32 color); |
+ |
+ Draw a colored pixel on coordinates x,y. |
+ |
+ |
+void Draw_Line(SDL_Surface *super, |
+ Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, |
+ Uint32 color); |
+ |
+ Draw a line from x1,y1 to x2,y2. |
+ |
+ |
+void Draw_Circle(SDL_Surface *super, |
+ Sint16 x0, Sint16 y0, Uint16 r, |
+ Uint32 color); |
+ |
+ Draw a circle with center x0,y0 and radius r. |
+ |
+ |
+void Draw_FillCircle(SDL_Surface *super, |
+ Sint16 x0, Sint16 y0, Uint16 r, |
+ Uint32 color); |
+ |
+ Draw a filled circle with center x0,y0 and radius r. |
+ |
+ |
+void Draw_HLine(SDL_Surface *super, |
+ Sint16 x0,Sint16 y0, Sint16 x1, |
+ Uint32 color); |
+ |
+ Draw a horizontal line from x0,y0 to x1,y0. |
+ |
+ |
+void Draw_VLine(SDL_Surface *super, |
+ Sint16 x0,Sint16 y0, Sint16 y1, |
+ Uint32 color); |
+ |
+ Draw a vertical line from x0,y0 to x0,y1. |
+ |
+ |
+void Draw_Rect(SDL_Surface *super, |
+ Sint16 x,Sint16 y, Uint16 w,Uint16 h, |
+ Uint32 color); |
+ |
+ Draw a rectangle with upper left corner in x,y being w the width and h the |
+ height. |
+ |
+ |
+void Draw_FillRect(SDL_Surface *super, |
+ Sint16 x,Sint16 y, Uint16 w,Uint16 h, |
+ Uint32 color); |
+ |
+ The same as above but the rectangle is filled. This function is equivalent |
+ to SDL_FillRect (is a MACRO). |
+ |
+ |
+void Draw_Ellipse(SDL_Surface *super, |
+ Sint16 x0, Sint16 y0, |
+ Uint16 Xradius, Uint16 Yradius, |
+ Uint32 color); |
+ |
+ Draw a ellipse with center in x0,y0. Xradius is the major axis and Yradius is |
+ the minor axis. |
+ |
+ |
+void Draw_FillEllipse(SDL_Surface *super, |
+ Sint16 x0, Sint16 y0, |
+ Uint16 Xradius, Uint16 Yradius, |
+ Uint32 color); |
+ |
+ Draw a filled ellipse (same parameters as the above function). |
+ |
+ |
+void Draw_Round(SDL_Surface *super, |
+ Sint16 x0,Sint16 y0, Uint16 w,Uint16 h, |
+ Uint16 corner, Uint32 color); |
+ |
+ Draw a rectangle with rounded corners. x0,y0 is the upper left corner of the |
+ rectangle, w is the width and h is the height. corner is the radius of the |
+ corner. |
+ |
+ |
+void Draw_Round(SDL_Surface *super, |
+ Sint16 x0,Sint16 y0, Uint16 w,Uint16 h, |
+ Uint16 corner, Uint32 color); |
+ |
+ The same as above but the rounded rectangle is filled. |
+ |
+ |
+The file sdldrawtest.c is a example application for the library. You can |
+compile it using (for GNU Compiler): |
+ |
+$ export CFLAGS="`sdl-config --cflags` -I./include" |
+$ export LIBS="`sdl-config --libs` ./src/.libs/libSDL_draw.a" |
+$ gcc -o sdldrawtest sdldrawtest.c -Wall $CFLAGS $LIBS |
+ |
+This library is under the GNU Library General Public License, see the file |
+"COPYING" for details. |
+ |
/contrib/sdk/sources/SDL-1.2.2/SDL_draw/TODO |
---|
0,0 → 1,9 |
TODO 07-2002 |
~~~~~~~~~~~~ |
- Draw_Arc |
- Draw_Pie (or Draw_FillArc) |
- Draw_Thick* (Thicks versions of the functions) |
- Implement __antialiasing__ version of the functions (ex: Draw_ALine) |
- Optimizations (Processor Pipeline and others) |
/contrib/sdk/sources/SDL-1.2.2/SDL_draw/confdefs.h |
---|
0,0 → 1,3 |
#define PACKAGE "SDL_draw" |
#define VERSION "1.2.1" |
/contrib/sdk/sources/SDL-1.2.2/SDL_draw/include/SDL_draw.h |
---|
0,0 → 1,114 |
/*! |
\file SDL_draw.h |
\author Mario Palomo Torrero <mpalomo@ihman.com> |
\author Jose M. de la Huerga Fernández |
\author Pepe González Mora |
\date 05-2002 |
Drawing primitives for SDL. Main header file. |
This library is free software; you can redistribute it and/or |
modify it under the terms of the GNU Library General Public |
License as published by the Free Software Foundation; either |
version 2 of the License, or (at your option) any later version. |
This library 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 |
Library General Public License for more details. |
You should have received a copy of the GNU Library General Public |
License along with this library; if not, write to the Free Foundation, |
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*/ |
#ifndef SDL_DRAW_H |
#define SDL_DRAW_H |
#include "SDL.h" |
#include "begin_code.h" |
#ifdef __cplusplus |
extern "C" { |
#endif |
extern DECLSPEC void Draw_Init(void); |
extern DECLSPEC |
void (*Draw_Pixel)(SDL_Surface *super, |
Sint16 x, Sint16 y, Uint32 color); |
extern DECLSPEC |
void (*Draw_Line)(SDL_Surface *super, |
Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, |
Uint32 color); |
extern DECLSPEC |
void (*Draw_Circle)(SDL_Surface *super, |
Sint16 x0, Sint16 y0, Uint16 r, |
Uint32 color); |
extern DECLSPEC |
void (*Draw_FillCircle)(SDL_Surface *super, |
Sint16 x0, Sint16 y0, Uint16 r, |
Uint32 color); |
extern DECLSPEC |
void (*Draw_HLine)(SDL_Surface *super, |
Sint16 x0,Sint16 y0, Sint16 x1, |
Uint32 color); |
extern DECLSPEC |
void (*Draw_VLine)(SDL_Surface *super, |
Sint16 x0,Sint16 y0, Sint16 y1, |
Uint32 color); |
extern DECLSPEC |
void (*Draw_Rect)(SDL_Surface *super, |
Sint16 x,Sint16 y, Uint16 w,Uint16 h, |
Uint32 color); |
/* We wrap SDL_FillRect with the SDL_draw name convention */ |
#define Draw_FillRect(SUPER, X, Y, W, H, COLOR) \ |
do { \ |
SDL_Rect r = {(X), (Y), (W), (H)}; \ |
SDL_FillRect((SUPER), &r, (COLOR)); \ |
}while(0) |
extern DECLSPEC |
void (*Draw_Ellipse)(SDL_Surface *super, |
Sint16 x0, Sint16 y0, |
Uint16 Xradius, Uint16 Yradius, |
Uint32 color); |
extern DECLSPEC |
void (*Draw_FillEllipse)(SDL_Surface *super, |
Sint16 x0, Sint16 y0, |
Uint16 Xradius, Uint16 Yradius, |
Uint32 color); |
extern DECLSPEC |
void (*Draw_Round)(SDL_Surface *super, |
Sint16 x0,Sint16 y0, Uint16 w,Uint16 h, |
Uint16 corner, Uint32 color); |
extern DECLSPEC |
void (*Draw_FillRound)(SDL_Surface *super, |
Sint16 x0,Sint16 y0, Uint16 w,Uint16 h, |
Uint16 corner, Uint32 color); |
/* We'll use SDL for reporting errors */ |
#define Draw_SetError SDL_SetError |
#define Draw_GetError SDL_GetError |
#ifdef __cplusplus |
} /* extern "C" */ |
#endif |
#include "close_code.h" |
#endif /* SDL_DRAW_H */ |
/contrib/sdk/sources/SDL-1.2.2/SDL_draw/src/Draw_Circle.c |
---|
0,0 → 1,101 |
/*! |
\file Draw_Circle.c |
\author Mario Palomo <mpalomo@ihman.com> |
\author Jose M. de la Huerga Fernández |
\author Pepe González Mora |
\date 05-2002 |
This library is free software; you can redistribute it and/or |
modify it under the terms of the GNU Library General Public |
License as published by the Free Software Foundation; either |
version 2 of the License, or (at your option) any later version. |
This library 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 |
Library General Public License for more details. |
You should have received a copy of the GNU Library General Public |
License along with this library; if not, write to the Free Foundation, |
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*/ |
#define SDL_DRAW_PUTPIXEL_BPP(A, B, C) \ |
*(##A##(##B##(Uint8*)super->pixels + (y0+y)*super->pitch + \ |
(x0+x)*SDL_DRAW_BPP)) = ##C##; \ |
*(##A##(##B##(Uint8*)super->pixels + (y0-y)*super->pitch + \ |
(x0+x)*SDL_DRAW_BPP)) = ##C##; \ |
*(##A##(##B##(Uint8*)super->pixels + (y0+y)*super->pitch + \ |
(x0-x)*SDL_DRAW_BPP)) = ##C##; \ |
*(##A##(##B##(Uint8*)super->pixels + (y0-y)*super->pitch + \ |
(x0-x)*SDL_DRAW_BPP)) = ##C##; \ |
*(##A##(##B##(Uint8*)super->pixels + (y0+x)*super->pitch + \ |
(x0+y)*SDL_DRAW_BPP)) = ##C##; \ |
*(##A##(##B##(Uint8*)super->pixels + (y0-x)*super->pitch + \ |
(x0+y)*SDL_DRAW_BPP)) = ##C##; \ |
*(##A##(##B##(Uint8*)super->pixels + (y0+x)*super->pitch + \ |
(x0-y)*SDL_DRAW_BPP)) = ##C##; \ |
*(##A##(##B##(Uint8*)super->pixels + (y0-x)*super->pitch + \ |
(x0-y)*SDL_DRAW_BPP)) = ##C##; |
#if SDL_DRAW_BPP == 1 |
#define SDL_DRAW_PUTPIXEL SDL_DRAW_PUTPIXEL_BPP(0+,0+,color) |
#elif SDL_DRAW_BPP == 2 |
#define SDL_DRAW_PUTPIXEL SDL_DRAW_PUTPIXEL_BPP((Uint16*),0+,color) |
#elif SDL_DRAW_BPP == 3 |
#define SDL_DRAW_PUTPIXEL \ |
SDL_DRAW_PUTPIXEL_BPP(0+,1+,colorbyte1) \ |
if (SDL_BYTEORDER == SDL_BIG_ENDIAN) { \ |
SDL_DRAW_PUTPIXEL_BPP(0+,0+,colorbyte2) \ |
SDL_DRAW_PUTPIXEL_BPP(0+,2+,colorbyte0) \ |
}else{ \ |
SDL_DRAW_PUTPIXEL_BPP(0+,0+,colorbyte0) \ |
SDL_DRAW_PUTPIXEL_BPP(0+,2+,colorbyte2) \ |
} |
#elif SDL_DRAW_BPP == 4 |
#define SDL_DRAW_PUTPIXEL SDL_DRAW_PUTPIXEL_BPP((Uint32*),0+,color) |
#endif /*SDL_DRAW_BPP*/ |
void SDL_DRAWFUNCTION(SDL_Surface *super, |
Sint16 x0, Sint16 y0, Uint16 r, |
Uint32 color) |
{ |
#if SDL_DRAW_BPP == 3 |
Uint8 colorbyte0 = (Uint8) (color & 0xff); |
Uint8 colorbyte1 = (Uint8) ((color >> 8) & 0xff); |
Uint8 colorbyte2 = (Uint8) ((color >> 16) & 0xff); |
#endif |
Sint16 x = 0; |
Sint16 y = r-1; /*radius zero == draw nothing*/ |
Sint16 d = 3 - 2*r; |
Sint16 diagonalInc = 10 - 4*r; |
Sint16 rightInc = 6; |
while (x <= y) { |
SDL_DRAW_PUTPIXEL |
if (d >= 0) { |
d += diagonalInc; |
diagonalInc += 8; |
y -= 1; |
} else { |
d += rightInc; |
diagonalInc += 4; |
} |
rightInc += 4; |
x += 1; |
} |
}/*Draw_Circle*/ |
#undef SDL_DRAW_PUTPIXEL |
#undef SDL_DRAW_PUTPIXEL_BPP |
/contrib/sdk/sources/SDL-1.2.2/SDL_draw/src/Draw_Ellipse.c |
---|
0,0 → 1,137 |
/*! |
\file Draw_Ellipse.c |
\author Mario Palomo <mpalomo@ihman.com> |
\author Jose M. de la Huerga Fernández |
\author Pepe González Mora |
\date 05-2002 |
This library is free software; you can redistribute it and/or |
modify it under the terms of the GNU Library General Public |
License as published by the Free Software Foundation; either |
version 2 of the License, or (at your option) any later version. |
This library 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 |
Library General Public License for more details. |
You should have received a copy of the GNU Library General Public |
License along with this library; if not, write to the Free Foundation, |
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*/ |
#define SDL_DRAW_PUTPIXEL_BPP(A, B, C) \ |
*(##A##(##B##(Uint8*)super->pixels + (y0+y)*super->pitch + \ |
(x0+x)*SDL_DRAW_BPP)) = ##C##; \ |
*(##A##(##B##(Uint8*)super->pixels + (y0-y)*super->pitch + \ |
(x0+x)*SDL_DRAW_BPP)) = ##C##; \ |
*(##A##(##B##(Uint8*)super->pixels + (y0+y)*super->pitch + \ |
(x0-x)*SDL_DRAW_BPP)) = ##C##; \ |
*(##A##(##B##(Uint8*)super->pixels + (y0-y)*super->pitch + \ |
(x0-x)*SDL_DRAW_BPP)) = ##C##; |
#if SDL_DRAW_BPP == 1 |
#define SDL_DRAW_PUTPIXEL SDL_DRAW_PUTPIXEL_BPP(0+,0+,color) |
#elif SDL_DRAW_BPP == 2 |
#define SDL_DRAW_PUTPIXEL SDL_DRAW_PUTPIXEL_BPP((Uint16*),0+,color) |
#elif SDL_DRAW_BPP == 3 |
#define SDL_DRAW_PUTPIXEL \ |
SDL_DRAW_PUTPIXEL_BPP(0+,1+,colorbyte1) \ |
if (SDL_BYTEORDER == SDL_BIG_ENDIAN) { \ |
SDL_DRAW_PUTPIXEL_BPP(0+,0+,colorbyte2) \ |
SDL_DRAW_PUTPIXEL_BPP(0+,2+,colorbyte0) \ |
}else{ \ |
SDL_DRAW_PUTPIXEL_BPP(0+,0+,colorbyte0) \ |
SDL_DRAW_PUTPIXEL_BPP(0+,2+,colorbyte2) \ |
} |
#elif SDL_DRAW_BPP == 4 |
#define SDL_DRAW_PUTPIXEL SDL_DRAW_PUTPIXEL_BPP((Uint32*),0+,color) |
#endif /*SDL_DRAW_BPP*/ |
void SDL_DRAWFUNCTION(SDL_Surface *super, |
Sint16 x0, Sint16 y0, |
Uint16 Xradius, Uint16 Yradius, |
Uint32 color) |
{ |
Sint32 x, y; |
Sint32 Xchange, Ychange; |
Sint32 EllipseError; |
Sint32 TwoASquare, TwoBSquare; |
Sint32 StoppingX, StoppingY; |
#if SDL_DRAW_BPP == 3 |
Uint8 colorbyte0 = (Uint8) (color & 0xff); |
Uint8 colorbyte1 = (Uint8) ((color >> 8) & 0xff); |
Uint8 colorbyte2 = (Uint8) ((color >> 16) & 0xff); |
#endif |
TwoASquare = 2*Xradius*Xradius; |
TwoBSquare = 2*Yradius*Yradius; |
/*1st set of points*/ |
x = Xradius-1; /*radius zero == draw nothing*/ |
y = 0; |
Xchange = Yradius*Yradius*(1-2*Xradius); |
Ychange = Xradius*Xradius; |
EllipseError = 0; |
StoppingX = TwoBSquare*Xradius; |
StoppingY = 0; |
/*Plot four ellipse points by iteration*/ |
while (StoppingX > StoppingY) { |
SDL_DRAW_PUTPIXEL |
++y; |
StoppingY += TwoASquare; |
EllipseError += Ychange; |
Ychange += TwoASquare; |
if (( 2*EllipseError + Xchange) > 0) { |
--x; |
StoppingX -= TwoBSquare; |
EllipseError += Xchange; |
Xchange += TwoBSquare; |
} |
}/*while*/ |
/*2nd set of points*/ |
x = 0; |
y = Yradius-1; /*radius zero == draw nothing*/ |
Xchange = Yradius*Yradius; |
Ychange = Xradius*Xradius*(1-2*Yradius); |
EllipseError = 0; |
StoppingX = 0; |
StoppingY = TwoASquare*Yradius; |
/*Plot four ellipse points by iteration*/ |
while (StoppingX < StoppingY) { |
SDL_DRAW_PUTPIXEL |
++x; |
StoppingX += TwoBSquare; |
EllipseError += Xchange; |
Xchange += TwoBSquare; |
if ((2*EllipseError + Ychange) > 0) { |
--y; |
StoppingY -= TwoASquare; |
EllipseError += Ychange; |
Ychange += TwoASquare; |
} |
} |
}/*Draw_Ellipse*/ |
#undef SDL_DRAW_PUTPIXEL |
#undef SDL_DRAW_PUTPIXEL_BPP |
/contrib/sdk/sources/SDL-1.2.2/SDL_draw/src/Draw_FillCircle.c |
---|
0,0 → 1,216 |
/*! |
\file Draw_FillCircle.c |
\author Mario Palomo <mpalomo@ihman.com> |
\author Jose M. de la Huerga Fernández |
\author Pepe González Mora |
\date 05-2002 |
This library is free software; you can redistribute it and/or |
modify it under the terms of the GNU Library General Public |
License as published by the Free Software Foundation; either |
version 2 of the License, or (at your option) any later version. |
This library 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 |
Library General Public License for more details. |
You should have received a copy of the GNU Library General Public |
License along with this library; if not, write to the Free Foundation, |
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*/ |
#if SDL_DRAW_BPP == 1 |
#define SDL_DRAW_PUTPIXEL \ |
memset(p0, color, 2*x+1); \ |
memset(p1, color, 2*x+1); \ |
p0 = ((Uint8*)super->pixels+ (y0+x)*super->pitch+ (x0-y)); \ |
p1 = ((Uint8*)super->pixels+ (y0-x)*super->pitch+ (x0-y)); \ |
memset(p0, color, 2*y+1); \ |
memset(p1, color, 2*y+1); |
#elif SDL_DRAW_BPP == 2 |
#define SDL_DRAW_PUTPIXEL \ |
i = 2*x+1; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: *(Uint16*)p0 = color; *(Uint16*)p1 = color; \ |
p0+=2; p1+=2; \ |
case 3: *(Uint16*)p0 = color; *(Uint16*)p1 = color; \ |
p0+=2; p1+=2; \ |
case 2: *(Uint16*)p0 = color; *(Uint16*)p1 = color; \ |
p0+=2; p1+=2; \ |
case 1: *(Uint16*)p0 = color; *(Uint16*)p1 = color; \ |
p0+=2; p1+=2; \ |
}while( (i-=4) > 0 ); \ |
} \ |
p0 = ((Uint8*)super->pixels+ (y0+x)*super->pitch+ (x0-y)*2); \ |
p1 = ((Uint8*)super->pixels+ (y0-x)*super->pitch+ (x0-y)*2); \ |
i = 2*y+1; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: *(Uint16*)p0 = color; *(Uint16*)p1 = color; \ |
p0+=2; p1+=2; \ |
case 3: *(Uint16*)p0 = color; *(Uint16*)p1 = color; \ |
p0+=2; p1+=2; \ |
case 2: *(Uint16*)p0 = color; *(Uint16*)p1 = color; \ |
p0+=2; p1+=2; \ |
case 1: *(Uint16*)p0 = color; *(Uint16*)p1 = color; \ |
p0+=2; p1+=2; \ |
}while( (i-=4) > 0 ); \ |
} |
#elif SDL_DRAW_BPP == 3 |
#define SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
if (SDL_BYTEORDER == SDL_BIG_ENDIAN) { \ |
p0[0] = colorbyte2; \ |
p0[1] = colorbyte1; \ |
p0[2] = colorbyte0; \ |
p1[0] = colorbyte2; \ |
p1[1] = colorbyte1; \ |
p1[2] = colorbyte0; \ |
} else { \ |
p0[0] = colorbyte0; \ |
p0[1] = colorbyte1; \ |
p0[2] = colorbyte2; \ |
p1[0] = colorbyte0; \ |
p1[1] = colorbyte1; \ |
p1[2] = colorbyte2; \ |
} |
#define SDL_DRAW_PUTPIXEL \ |
i = 2*x+1; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=3; p1+=3; \ |
case 3: SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=3; p1+=3; \ |
case 2: SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=3; p1+=3; \ |
case 1: SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=3; p1+=3; \ |
}while( (i-=4) > 0 ); \ |
} \ |
p0 = ((Uint8*)super->pixels+ (y0+x)*super->pitch+ (x0-y)*3); \ |
p1 = ((Uint8*)super->pixels+ (y0-x)*super->pitch+ (x0-y)*3); \ |
i = 2*y+1; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=3; p1+=3; \ |
case 3: SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=3; p1+=3; \ |
case 2: SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=3; p1+=3; \ |
case 1: SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=3; p1+=3; \ |
}while( (i-=4) > 0 ); \ |
} |
#elif SDL_DRAW_BPP == 4 |
#ifdef __linux__ |
#define SDL_DRAW_WMEMSET_START \ |
if (sizeof(wchar_t) == sizeof(Uint32)) { \ |
wmemset((wchar_t*)p0, color, 2*x+1); \ |
wmemset((wchar_t*)p1, color, 2*x+1); \ |
p0 = ((Uint8*)super->pixels+ (y0+x)*super->pitch+ (x0-y)*4); \ |
p1 = ((Uint8*)super->pixels+ (y0-x)*super->pitch+ (x0-y)*4); \ |
wmemset((wchar_t*)p0, color, 2*y+1); \ |
wmemset((wchar_t*)p1, color, 2*y+1); \ |
} else { |
#define SDL_DRAW_WMEMSET_END } |
#else |
#define SDL_DRAW_WMEMSET_START |
#define SDL_DRAW_WMEMSET_END |
#endif |
#define SDL_DRAW_PUTPIXEL \ |
SDL_DRAW_WMEMSET_START \ |
i = 2*x+1; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: *(Uint32*)p0 = color; *(Uint32*)p1 = color; \ |
p0+=4; p1+=4; \ |
case 3: *(Uint32*)p0 = color; *(Uint32*)p1 = color; \ |
p0+=4; p1+=4; \ |
case 2: *(Uint32*)p0 = color; *(Uint32*)p1 = color; \ |
p0+=4; p1+=4; \ |
case 1: *(Uint32*)p0 = color; *(Uint32*)p1 = color; \ |
p0+=4; p1+=4; \ |
}while( (i-=4) > 0 ); \ |
} \ |
p0 = ((Uint8*)super->pixels+ (y0+x)*super->pitch+ (x0-y)*4); \ |
p1 = ((Uint8*)super->pixels+ (y0-x)*super->pitch+ (x0-y)*4); \ |
i = 2*y+1; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: *(Uint32*)p0 = color; *(Uint32*)p1 = color; \ |
p0+=4; p1+=4; \ |
case 3: *(Uint32*)p0 = color; *(Uint32*)p1 = color; \ |
p0+=4; p1+=4; \ |
case 2: *(Uint32*)p0 = color; *(Uint32*)p1 = color; \ |
p0+=4; p1+=4; \ |
case 1: *(Uint32*)p0 = color; *(Uint32*)p1 = color; \ |
p0+=4; p1+=4; \ |
}while( (i-=4) > 0 ); \ |
} \ |
SDL_DRAW_WMEMSET_END |
#endif /*SDL_DRAW_BPP*/ |
void SDL_DRAWFUNCTION(SDL_Surface *super, |
Sint16 x0, Sint16 y0, Uint16 r, |
Uint32 color) |
{ |
#if SDL_DRAW_BPP == 3 |
Uint8 colorbyte0 = (Uint8) (color & 0xff); |
Uint8 colorbyte1 = (Uint8) ((color >> 8) & 0xff); |
Uint8 colorbyte2 = (Uint8) ((color >> 16) & 0xff); |
#endif |
register Uint8 *p0; |
register Uint8 *p1; |
#if SDL_DRAW_BPP != 1 |
register Sint16 i; |
#endif |
Sint16 x = 0; |
Sint16 y = r-1; /*radius zero == draw nothing*/ |
Sint16 d = 3 - 2*r; |
Sint16 diagonalInc = 10 - 4*r; |
Sint16 rightInc = 6; |
while (x <= y) { |
p0 = ((Uint8*)super->pixels+ (y0+y)*super->pitch+ (x0-x)*SDL_DRAW_BPP); |
p1 = ((Uint8*)super->pixels+ (y0-y)*super->pitch+ (x0-x)*SDL_DRAW_BPP); |
SDL_DRAW_PUTPIXEL |
if (d >= 0) { |
d += diagonalInc; |
diagonalInc += 8; |
y -= 1; |
} else { |
d += rightInc; |
diagonalInc += 4; |
} |
rightInc += 4; |
x += 1; |
} |
}/*Draw_FillCircle*/ |
#undef SDL_DRAW_PUTPIXEL |
#undef SDL_DRAW_PUTPIXEL_BPP_3_AUX |
#undef SDL_DRAW_WMEMSET_START |
#undef SDL_DRAW_WMEMSET_END |
/contrib/sdk/sources/SDL-1.2.2/SDL_draw/src/Draw_FillEllipse.c |
---|
0,0 → 1,217 |
/*! |
\file Draw_FillEllipse.c |
\author Mario Palomo <mpalomo@ihman.com> |
\author Jose M. de la Huerga Fernández |
\author Pepe González Mora |
\date 05-2002 |
This library is free software; you can redistribute it and/or |
modify it under the terms of the GNU Library General Public |
License as published by the Free Software Foundation; either |
version 2 of the License, or (at your option) any later version. |
This library 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 |
Library General Public License for more details. |
You should have received a copy of the GNU Library General Public |
License along with this library; if not, write to the Free Foundation, |
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*/ |
#if SDL_DRAW_BPP == 1 |
#define SDL_DRAW_PUTPIXEL \ |
memset(((Uint8*)super->pixels+ (y0+y)*super->pitch+ (x0-x)), \ |
color, 2*x+1); \ |
memset(((Uint8*)super->pixels+ (y0-y)*super->pitch+ (x0-x)), \ |
color, 2*x+1); |
#elif SDL_DRAW_BPP == 2 |
#define SDL_DRAW_PUTPIXEL \ |
{ \ |
p0 = ((Uint8*)super->pixels+ (y0+y)*super->pitch+ (x0-x)*2); \ |
p1 = ((Uint8*)super->pixels+ (y0-y)*super->pitch+ (x0-x)*2); \ |
i = 2*x+1; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: *(Uint16*)p0 = color; *(Uint16*)p1 = color; \ |
p0+=2; p1+=2; \ |
case 3: *(Uint16*)p0 = color; *(Uint16*)p1 = color; \ |
p0+=2; p1+=2; \ |
case 2: *(Uint16*)p0 = color; *(Uint16*)p1 = color; \ |
p0+=2; p1+=2; \ |
case 1: *(Uint16*)p0 = color; *(Uint16*)p1 = color; \ |
p0+=2; p1+=2; \ |
}while( (i-=4) > 0 ); \ |
} \ |
} |
#elif SDL_DRAW_BPP == 3 |
#define SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
if (SDL_BYTEORDER == SDL_BIG_ENDIAN) { \ |
p0[0] = colorbyte2; \ |
p0[1] = colorbyte1; \ |
p0[2] = colorbyte0; \ |
p1[0] = colorbyte2; \ |
p1[1] = colorbyte1; \ |
p1[2] = colorbyte0; \ |
} else { \ |
p0[0] = colorbyte0; \ |
p0[1] = colorbyte1; \ |
p0[2] = colorbyte2; \ |
p1[0] = colorbyte0; \ |
p1[1] = colorbyte1; \ |
p1[2] = colorbyte2; \ |
} |
#define SDL_DRAW_PUTPIXEL \ |
{ \ |
p0 = ((Uint8*)super->pixels+ (y0+y)*super->pitch+ (x0-x)*3); \ |
p1 = ((Uint8*)super->pixels+ (y0-y)*super->pitch+ (x0-x)*3); \ |
i = 2*x+1; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=3; p1+=3; \ |
case 3: SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=3; p1+=3; \ |
case 2: SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=3; p1+=3; \ |
case 1: SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=3; p1+=3; \ |
}while( (i-=4) > 0 ); \ |
} \ |
} |
#elif SDL_DRAW_BPP == 4 |
#ifdef __linux__ |
#define SDL_DRAW_WMEMSET_START \ |
if (sizeof(wchar_t) == sizeof(Uint32)) { \ |
wmemset( (wchar_t*)((Uint8*)super->pixels+ (y0+y)*super->pitch+ (x0-x)*4), \ |
color, 2*x+1); \ |
wmemset( (wchar_t*)((Uint8*)super->pixels+ (y0-y)*super->pitch+ (x0-x)*4), \ |
color, 2*x+1); \ |
} else { |
#define SDL_DRAW_WMEMSET_END } |
#else |
#define SDL_DRAW_WMEMSET_START |
#define SDL_DRAW_WMEMSET_END |
#endif |
#define SDL_DRAW_PUTPIXEL \ |
SDL_DRAW_WMEMSET_START \ |
p0 = ((Uint8*)super->pixels+ (y0+y)*super->pitch+ (x0-x)*4); \ |
p1 = ((Uint8*)super->pixels+ (y0-y)*super->pitch+ (x0-x)*4); \ |
i = 2*x+1; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: *(Uint32*)p0 = color; *(Uint32*)p1 = color; \ |
p0+=4; p1+=4; \ |
case 3: *(Uint32*)p0 = color; *(Uint32*)p1 = color; \ |
p0+=4; p1+=4; \ |
case 2: *(Uint32*)p0 = color; *(Uint32*)p1 = color; \ |
p0+=4; p1+=4; \ |
case 1: *(Uint32*)p0 = color; *(Uint32*)p1 = color; \ |
p0+=4; p1+=4; \ |
}while( (i-=4) > 0 ); \ |
} \ |
SDL_DRAW_WMEMSET_END |
#endif /*SDL_DRAW_BPP*/ |
void SDL_DRAWFUNCTION(SDL_Surface *super, |
Sint16 x0, Sint16 y0, |
Uint16 Xradius, Uint16 Yradius, |
Uint32 color) |
{ |
#if SDL_DRAW_BPP == 3 |
Uint8 colorbyte0 = (Uint8) (color & 0xff); |
Uint8 colorbyte1 = (Uint8) ((color >> 8) & 0xff); |
Uint8 colorbyte2 = (Uint8) ((color >> 16) & 0xff); |
#endif |
#if SDL_DRAW_BPP != 1 |
register Uint8 *p0; |
register Uint8 *p1; |
register Sint16 i; |
#endif |
Sint32 x, y; |
Sint32 Xchange, Ychange; |
Sint32 EllipseError; |
Sint32 TwoASquare, TwoBSquare; |
Sint32 StoppingX, StoppingY; |
TwoASquare = 2*Xradius*Xradius; |
TwoBSquare = 2*Yradius*Yradius; |
/*1st set of points*/ |
x = Xradius-1; /*radius zero == draw nothing*/ |
y = 0; |
Xchange = Yradius*Yradius*(1-2*Xradius); |
Ychange = Xradius*Xradius; |
EllipseError = 0; |
StoppingX = TwoBSquare*Xradius; |
StoppingY = 0; |
/*Plot 2 ellipse scan lines for iteration*/ |
while (StoppingX > StoppingY) { |
SDL_DRAW_PUTPIXEL |
++y; |
StoppingY += TwoASquare; |
EllipseError += Ychange; |
Ychange += TwoASquare; |
if (( 2*EllipseError + Xchange) > 0) { |
--x; |
StoppingX -= TwoBSquare; |
EllipseError += Xchange; |
Xchange += TwoBSquare; |
} |
}/*while*/ |
/*2nd set of points*/ |
x = 0; |
y = Yradius-1; /*radius zero == draw nothing*/ |
Xchange = Yradius*Yradius; |
Ychange = Xradius*Xradius*(1-2*Yradius); |
EllipseError = 0; |
StoppingX = 0; |
StoppingY = TwoASquare*Yradius; |
/*Plot 2 ellipse scan lines for iteration*/ |
while (StoppingX < StoppingY) { |
SDL_DRAW_PUTPIXEL |
++x; |
StoppingX += TwoBSquare; |
EllipseError += Xchange; |
Xchange += TwoBSquare; |
if ((2*EllipseError + Ychange) > 0) { |
--y; |
StoppingY -= TwoASquare; |
EllipseError += Ychange; |
Ychange += TwoASquare; |
} |
} |
}/*Draw_FillEllipse*/ |
#undef SDL_DRAW_PUTPIXEL |
#undef SDL_DRAW_PUTPIXEL_BPP_3_AUX |
#undef SDL_DRAW_WMEMSET_START |
#undef SDL_DRAW_WMEMSET_END |
/contrib/sdk/sources/SDL-1.2.2/SDL_draw/src/Draw_FillRound.c |
---|
0,0 → 1,248 |
/*! |
\file Draw_FillRound.c |
\author Mario Palomo <mpalomo@ihman.com> |
\author Jose M. de la Huerga Fernández |
\author Pepe González Mora |
\date 05-2002 |
This library is free software; you can redistribute it and/or |
modify it under the terms of the GNU Library General Public |
License as published by the Free Software Foundation; either |
version 2 of the License, or (at your option) any later version. |
This library 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 |
Library General Public License for more details. |
You should have received a copy of the GNU Library General Public |
License along with this library; if not, write to the Free Foundation, |
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*/ |
#if SDL_DRAW_BPP == 1 |
#define SDL_DRAW_PUTPIXEL \ |
memset(p0, color, X2center - Xcenter + 2*corner+1); \ |
memset(p1, color, X2center - Xcenter + 2*corner+1); \ |
p0 = ((Uint8*)super->pixels+(Y2center+corner)*super->pitch+(Xcenter-x)); \ |
p1 = ((Uint8*)super->pixels+(Ycenter-corner)*super->pitch +(Xcenter-x)); \ |
memset(p0, color, X2center - Xcenter + 2*x+1); \ |
memset(p1, color, X2center - Xcenter + 2*x+1); |
#elif SDL_DRAW_BPP == 2 |
#define SDL_DRAW_PUTPIXEL \ |
i = X2center - Xcenter + 2*corner+1; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: *(Uint16*)p0 = color; *(Uint16*)p1 = color; \ |
p0+=2; p1+=2; \ |
case 3: *(Uint16*)p0 = color; *(Uint16*)p1 = color; \ |
p0+=2; p1+=2; \ |
case 2: *(Uint16*)p0 = color; *(Uint16*)p1 = color; \ |
p0+=2; p1+=2; \ |
case 1: *(Uint16*)p0 = color; *(Uint16*)p1 = color; \ |
p0+=2; p1+=2; \ |
}while( (i-=4) > 0 ); \ |
} \ |
p0 = ((Uint8*)super->pixels+(Y2center+corner)*super->pitch+(Xcenter-x)*2); \ |
p1 = ((Uint8*)super->pixels+(Ycenter-corner)*super->pitch +(Xcenter-x)*2); \ |
i = X2center - Xcenter + 2*x+1; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: *(Uint16*)p0 = color; *(Uint16*)p1 = color; \ |
p0+=2; p1+=2; \ |
case 3: *(Uint16*)p0 = color; *(Uint16*)p1 = color; \ |
p0+=2; p1+=2; \ |
case 2: *(Uint16*)p0 = color; *(Uint16*)p1 = color; \ |
p0+=2; p1+=2; \ |
case 1: *(Uint16*)p0 = color; *(Uint16*)p1 = color; \ |
p0+=2; p1+=2; \ |
}while( (i-=4) > 0 ); \ |
} |
#elif SDL_DRAW_BPP == 3 |
#define SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
if (SDL_BYTEORDER == SDL_BIG_ENDIAN) { \ |
p0[0] = colorbyte2; \ |
p0[1] = colorbyte1; \ |
p0[2] = colorbyte0; \ |
p1[0] = colorbyte2; \ |
p1[1] = colorbyte1; \ |
p1[2] = colorbyte0; \ |
} else { \ |
p0[0] = colorbyte0; \ |
p0[1] = colorbyte1; \ |
p0[2] = colorbyte2; \ |
p1[0] = colorbyte0; \ |
p1[1] = colorbyte1; \ |
p1[2] = colorbyte2; \ |
} |
#define SDL_DRAW_PUTPIXEL \ |
i = X2center - Xcenter + 2*corner+1; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=3; p1+=3; \ |
case 3: SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=3; p1+=3; \ |
case 2: SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=3; p1+=3; \ |
case 1: SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=3; p1+=3; \ |
}while( (i-=4) > 0 ); \ |
} \ |
p0 = ((Uint8*)super->pixels+(Y2center+corner)*super->pitch+(Xcenter-x)*3); \ |
p1 = ((Uint8*)super->pixels+(Ycenter-corner)*super->pitch +(Xcenter-x)*3); \ |
i = X2center - Xcenter + 2*x+1; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=3; p1+=3; \ |
case 3: SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=3; p1+=3; \ |
case 2: SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=3; p1+=3; \ |
case 1: SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=3; p1+=3; \ |
}while( (i-=4) > 0 ); \ |
} |
#elif SDL_DRAW_BPP == 4 |
#ifdef __linux__ |
#define SDL_DRAW_WMEMSET_START \ |
if (sizeof(wchar_t) == sizeof(Uint32)) { \ |
wmemset((wchar_t*)p0, color, X2center - Xcenter + 2*corner+1); \ |
wmemset((wchar_t*)p1, color, X2center - Xcenter + 2*corner+1); \ |
p0 = ((Uint8*)super->pixels+(Y2center+corner)*super->pitch+(Xcenter-x)*4); \ |
p1 = ((Uint8*)super->pixels+(Ycenter-corner)*super->pitch +(Xcenter-x)*4); \ |
wmemset((wchar_t*)p0, color, X2center - Xcenter + 2*x+1); \ |
wmemset((wchar_t*)p1, color, X2center - Xcenter + 2*x+1); \ |
} else { |
#define SDL_DRAW_WMEMSET_END } |
#else |
#define SDL_DRAW_WMEMSET_START |
#define SDL_DRAW_WMEMSET_END |
#endif |
#define SDL_DRAW_PUTPIXEL \ |
SDL_DRAW_WMEMSET_START \ |
i = X2center - Xcenter + 2*corner+1; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: *(Uint32*)p0 = color; *(Uint32*)p1 = color; \ |
p0+=4; p1+=4; \ |
case 3: *(Uint32*)p0 = color; *(Uint32*)p1 = color; \ |
p0+=4; p1+=4; \ |
case 2: *(Uint32*)p0 = color; *(Uint32*)p1 = color; \ |
p0+=4; p1+=4; \ |
case 1: *(Uint32*)p0 = color; *(Uint32*)p1 = color; \ |
p0+=4; p1+=4; \ |
}while( (i-=4) > 0 ); \ |
} \ |
p0 = ((Uint8*)super->pixels+(Y2center+corner)*super->pitch+(Xcenter-x)*4); \ |
p1 = ((Uint8*)super->pixels+(Ycenter-corner)*super->pitch +(Xcenter-x)*4); \ |
i = X2center - Xcenter + 2*x+1; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: *(Uint32*)p0 = color; *(Uint32*)p1 = color; \ |
p0+=4; p1+=4; \ |
case 3: *(Uint32*)p0 = color; *(Uint32*)p1 = color; \ |
p0+=4; p1+=4; \ |
case 2: *(Uint32*)p0 = color; *(Uint32*)p1 = color; \ |
p0+=4; p1+=4; \ |
case 1: *(Uint32*)p0 = color; *(Uint32*)p1 = color; \ |
p0+=4; p1+=4; \ |
}while( (i-=4) > 0 ); \ |
} \ |
SDL_DRAW_WMEMSET_END |
#endif /*SDL_DRAW_BPP*/ |
void SDL_DRAWFUNCTION(SDL_Surface *super, |
Sint16 x0,Sint16 y0, Uint16 w,Uint16 h, |
Uint16 corner, Uint32 color) |
{ |
#if SDL_DRAW_BPP == 3 |
Uint8 colorbyte0 = (Uint8) (color & 0xff); |
Uint8 colorbyte1 = (Uint8) ((color >> 8) & 0xff); |
Uint8 colorbyte2 = (Uint8) ((color >> 16) & 0xff); |
#endif |
register Uint8 *p0; |
register Uint8 *p1; |
#if SDL_DRAW_BPP != 1 |
register Sint16 i; |
#endif |
Sint16 dx, dy; |
Sint16 Xcenter, Ycenter, X2center, Y2center; |
Sint16 x = 0; |
Sint16 rightInc = 6; |
Sint16 d, diagonalInc; |
SDL_Rect r; |
if (w==0 || h==0) return; |
/*TODO: We can do better :-)*/ |
if (corner!=0) { |
d = w<h ? w : h; |
--corner; |
if (corner!=0 && corner+2 >= d ) { |
if (corner+2 == d) --corner; |
else corner = 0; |
} |
} |
d = 3 - (corner<<1); |
diagonalInc = 10 - (corner<<2); |
/*Rectangles*/ |
dx = w - (corner<<1); |
Xcenter = x0+corner; |
dy = h - (corner<<1); |
Ycenter = y0+corner; |
/*Centers*/ |
X2center=Xcenter+dx-1; |
Y2center=Ycenter+dy-1; |
r.x = x0; r.y = Ycenter; |
r.w = w; r.h = dy; |
SDL_FillRect(super, &r, color); |
while (x < corner) { |
p0 = ((Uint8*)super->pixels+(Ycenter-x)*super->pitch + |
(Xcenter-corner)*SDL_DRAW_BPP); |
p1 = ((Uint8*)super->pixels+(Y2center+x)*super->pitch + |
(Xcenter-corner)*SDL_DRAW_BPP); |
SDL_DRAW_PUTPIXEL |
if (d >= 0) { |
d += diagonalInc; |
diagonalInc += 8; |
--corner; |
} else { |
d += rightInc; |
diagonalInc += 4; |
} |
rightInc += 4; |
++x; |
}/*while*/ |
}/*Draw_FillRound*/ |
#undef SDL_DRAW_PUTPIXEL |
#undef SDL_DRAW_WMEMSET_START |
#undef SDL_DRAW_WMEMSET_END |
/contrib/sdk/sources/SDL-1.2.2/SDL_draw/src/Draw_HLine.c |
---|
0,0 → 1,117 |
/*! |
\file Draw_HLine.c |
\author Mario Palomo <mpalomo@ihman.com> |
\author Jose M. de la Huerga Fernández |
\author Pepe González Mora |
\date 05-2002 |
This library is free software; you can redistribute it and/or |
modify it under the terms of the GNU Library General Public |
License as published by the Free Software Foundation; either |
version 2 of the License, or (at your option) any later version. |
This library 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 |
Library General Public License for more details. |
You should have received a copy of the GNU Library General Public |
License along with this library; if not, write to the Free Foundation, |
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*/ |
#if SDL_DRAW_BPP == 1 |
#define SDL_DRAW_PUTPIXEL \ |
memset(p, color, x1-x0+1); |
#elif SDL_DRAW_BPP == 2 |
#define SDL_DRAW_PUTPIXEL \ |
i = x1-x0+1; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: *(Uint16*)p = color; p+=2; \ |
case 3: *(Uint16*)p = color; p+=2; \ |
case 2: *(Uint16*)p = color; p+=2; \ |
case 1: *(Uint16*)p = color; p+=2; \ |
}while( (i-=4) > 0 ); \ |
} |
#elif SDL_DRAW_BPP == 3 |
#define SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
if (SDL_BYTEORDER == SDL_BIG_ENDIAN) { \ |
p[0] = colorbyte2; \ |
p[1] = colorbyte1; \ |
p[2] = colorbyte0; \ |
} else { \ |
p[0] = colorbyte0; \ |
p[1] = colorbyte1; \ |
p[2] = colorbyte2; \ |
} |
#define SDL_DRAW_PUTPIXEL \ |
i = x1-x0+1; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: SDL_DRAW_PUTPIXEL_BPP_3_AUX p+=3; \ |
case 3: SDL_DRAW_PUTPIXEL_BPP_3_AUX p+=3; \ |
case 2: SDL_DRAW_PUTPIXEL_BPP_3_AUX p+=3; \ |
case 1: SDL_DRAW_PUTPIXEL_BPP_3_AUX p+=3; \ |
}while( (i-=4) > 0 ); \ |
} |
#elif SDL_DRAW_BPP == 4 |
#ifdef __linux__ |
#define SDL_DRAW_WMEMSET_START \ |
if (sizeof(wchar_t) == sizeof(Uint32)) { \ |
wmemset((wchar_t*)p, color, x1-x0+1); \ |
} else { |
#define SDL_DRAW_WMEMSET_END } |
#else |
#define SDL_DRAW_WMEMSET_START |
#define SDL_DRAW_WMEMSET_END |
#endif |
#define SDL_DRAW_PUTPIXEL \ |
SDL_DRAW_WMEMSET_START \ |
i = x1-x0+1; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: *(Uint32*)p = color; p+=4; \ |
case 3: *(Uint32*)p = color; p+=4; \ |
case 2: *(Uint32*)p = color; p+=4; \ |
case 1: *(Uint32*)p = color; p+=4; \ |
}while( (i-=4) > 0 ); \ |
} \ |
SDL_DRAW_WMEMSET_END |
#endif /*SDL_DRAW_BPP*/ |
void SDL_DRAWFUNCTION(SDL_Surface *super, |
Sint16 x0,Sint16 y0, Sint16 x1, |
Uint32 color) |
{ |
#if SDL_DRAW_BPP == 3 |
Uint8 colorbyte0 = (Uint8) (color & 0xff); |
Uint8 colorbyte1 = (Uint8) ((color >> 8) & 0xff); |
Uint8 colorbyte2 = (Uint8) ((color >> 16) & 0xff); |
#endif |
register Uint8 *p; |
register Sint16 i; |
if (x0 > x1) { i=x1; x1=x0; x0=i; } |
p = (Uint8*)super->pixels + y0 * super->pitch + x0 * SDL_DRAW_BPP; |
SDL_DRAW_PUTPIXEL |
}/*Draw_HLine*/ |
#undef SDL_DRAW_PUTPIXEL |
#undef SDL_DRAW_PUTPIXEL_BPP_3_AUX |
#undef SDL_DRAW_WMEMSET_START |
#undef SDL_DRAW_WMEMSET_END |
/contrib/sdk/sources/SDL-1.2.2/SDL_draw/src/Draw_Line.c |
---|
0,0 → 1,135 |
/*! |
\file Draw_Line.c |
\author Mario Palomo <mpalomo@ihman.com> |
\author Jose M. de la Huerga Fernández |
\author Pepe González Mora |
\date 05-2002 |
This library is free software; you can redistribute it and/or |
modify it under the terms of the GNU Library General Public |
License as published by the Free Software Foundation; either |
version 2 of the License, or (at your option) any later version. |
This library 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 |
Library General Public License for more details. |
You should have received a copy of the GNU Library General Public |
License along with this library; if not, write to the Free Foundation, |
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*/ |
#define SDL_DRAW_PUTPIXEL_BPP(A, B, C) \ |
*(##A##(##B##(Uint8*)super->pixels + y*super->pitch + x*SDL_DRAW_BPP))=##C##; |
#if SDL_DRAW_BPP == 1 |
#define SDL_DRAW_PUTPIXEL SDL_DRAW_PUTPIXEL_BPP(0+,0+,color) |
#elif SDL_DRAW_BPP == 2 |
#define SDL_DRAW_PUTPIXEL SDL_DRAW_PUTPIXEL_BPP((Uint16*),0+,color) |
#elif SDL_DRAW_BPP == 3 |
#define SDL_DRAW_PUTPIXEL \ |
SDL_DRAW_PUTPIXEL_BPP(0+,1+,(Uint8)colorbyte1) \ |
if (SDL_BYTEORDER == SDL_BIG_ENDIAN) { \ |
SDL_DRAW_PUTPIXEL_BPP(0+,0+,(Uint8)colorbyte2) \ |
SDL_DRAW_PUTPIXEL_BPP(0+,2+,(Uint8)colorbyte0) \ |
}else{ \ |
SDL_DRAW_PUTPIXEL_BPP(0+,0+,(Uint8)colorbyte0) \ |
SDL_DRAW_PUTPIXEL_BPP(0+,2+,(Uint8)colorbyte2) \ |
} |
#elif SDL_DRAW_BPP == 4 |
#define SDL_DRAW_PUTPIXEL SDL_DRAW_PUTPIXEL_BPP((Uint32*),0+,color) |
#endif /*SDL_DRAW_BPP*/ |
void SDL_DRAWFUNCTION(SDL_Surface *super, |
Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, |
Uint32 color) |
{ |
#if SDL_DRAW_BPP == 3 |
Uint8 colorbyte0 = (Uint8) (color & 0xff); |
Uint8 colorbyte1 = (Uint8) ((color >> 8) & 0xff); |
Uint8 colorbyte2 = (Uint8) ((color >> 16) & 0xff); |
#endif |
Sint16 x = x1; |
Sint16 y = y1; |
Sint16 dy = y2 - y1; |
Sint16 dx = x2 - x1; |
Sint16 G, DeltaG1, DeltaG2, minG, maxG; |
Sint16 swap; |
Sint16 inc = 1; |
SDL_DRAW_PUTPIXEL |
if (abs(dy) < abs(dx)) { /* -1 < ramp < 1 */ |
if (dx < 0) { |
dx = -dx; |
dy = -dy; |
swap = y2; |
y2 = y1; |
y1 = swap; |
swap = x2; |
x2 = x1; |
x1 = swap; |
} |
if (dy < 0) { |
dy = -dy; |
inc = -1; |
} |
G = 2 * dy - dx; |
DeltaG1 = 2 * (dy - dx); |
DeltaG2 = 2 * dy; |
while (x++ < x2) { |
if (G > 0) { G += DeltaG1; y += inc; } |
else G += DeltaG2; |
SDL_DRAW_PUTPIXEL |
}/*while*/ |
} else { /* ramp < -1 or ramp > 1 */ |
if (dy < 0) { |
dx = -dx; |
dy = -dy; |
swap = y2; |
y2 = y1; |
y1 = swap; |
swap = x2; |
x2 = x1; |
x1 = swap; |
} |
if (dx < 0) { |
dx = -dx; |
inc = -1; |
} |
G = 2 * dx - dy; |
minG = maxG = G; |
DeltaG1 = 2 * (dx - dy); |
DeltaG2 = 2 * dx; |
while (y++ < y2) { |
if (G > 0) { G += DeltaG1; x += inc; } |
else G += DeltaG2; |
SDL_DRAW_PUTPIXEL |
}/*while*/ |
}/*if*/ |
}/*Draw_Line*/ |
#undef SDL_DRAW_PUTPIXEL |
#undef SDL_DRAW_PUTPIXEL_BPP |
/contrib/sdk/sources/SDL-1.2.2/SDL_draw/src/Draw_Pixel.c |
---|
0,0 → 1,64 |
/*! |
\file Draw_Pixel.c |
\author Mario Palomo <mpalomo@ihman.com> |
\author Jose M. de la Huerga Fernández |
\author Pepe González Mora |
\date 05-2002 |
This library is free software; you can redistribute it and/or |
modify it under the terms of the GNU Library General Public |
License as published by the Free Software Foundation; either |
version 2 of the License, or (at your option) any later version. |
This library 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 |
Library General Public License for more details. |
You should have received a copy of the GNU Library General Public |
License along with this library; if not, write to the Free Foundation, |
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*/ |
#define SDL_DRAW_PUTPIXEL_BPP(A, B, C) \ |
*(##A##(##B##(Uint8*)super->pixels + y*super->pitch + x*SDL_DRAW_BPP))=##C##; |
#if SDL_DRAW_BPP == 1 |
#define SDL_DRAW_PUTPIXEL SDL_DRAW_PUTPIXEL_BPP(0+,0+,(Uint8)color) |
#elif SDL_DRAW_BPP == 2 |
#define SDL_DRAW_PUTPIXEL SDL_DRAW_PUTPIXEL_BPP((Uint16*),0+,(Uint16)color) |
#elif SDL_DRAW_BPP == 3 |
#define SDL_DRAW_PUTPIXEL \ |
SDL_DRAW_PUTPIXEL_BPP(0+,1+,colorbyte1) \ |
if (SDL_BYTEORDER == SDL_BIG_ENDIAN) { \ |
SDL_DRAW_PUTPIXEL_BPP(0+,0+,colorbyte2) \ |
SDL_DRAW_PUTPIXEL_BPP(0+,2+,colorbyte0) \ |
}else{ \ |
SDL_DRAW_PUTPIXEL_BPP(0+,0+,colorbyte0) \ |
SDL_DRAW_PUTPIXEL_BPP(0+,2+,colorbyte2) \ |
} |
#elif SDL_DRAW_BPP == 4 |
#define SDL_DRAW_PUTPIXEL SDL_DRAW_PUTPIXEL_BPP((Uint32*),0+,color) |
#endif /*SDL_DRAW_BPP*/ |
void SDL_DRAWFUNCTION(SDL_Surface *super, |
Sint16 x, Sint16 y, Uint32 color) |
{ |
#if SDL_DRAW_BPP == 3 |
Uint8 colorbyte0 = (Uint8) (color & 0xff); |
Uint8 colorbyte1 = (Uint8) ((color >> 8) & 0xff); |
Uint8 colorbyte2 = (Uint8) ((color >> 16) & 0xff); |
#endif |
SDL_DRAW_PUTPIXEL |
}/*Draw_Pixel*/ |
#undef SDL_DRAW_PUTPIXEL |
#undef SDL_DRAW_PUTPIXEL_BPP |
/contrib/sdk/sources/SDL-1.2.2/SDL_draw/src/Draw_Rect.c |
---|
0,0 → 1,236 |
/*! |
\file Draw_Rect.c |
\author Mario Palomo <mpalomo@ihman.com> |
\author Jose M. de la Huerga Fernández |
\author Pepe González Mora |
\date 05-2002 |
This library is free software; you can redistribute it and/or |
modify it under the terms of the GNU Library General Public |
License as published by the Free Software Foundation; either |
version 2 of the License, or (at your option) any later version. |
This library 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 |
Library General Public License for more details. |
You should have received a copy of the GNU Library General Public |
License along with this library; if not, write to the Free Foundation, |
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*/ |
#if SDL_DRAW_BPP == 1 |
#define SDL_DRAW_PUTPIXEL \ |
memset(p0, color, w); \ |
memset(p1, color, w); \ |
\ |
if (h<3) return; \ |
p0 = (Uint8*)super->pixels + (y+1)*super->pitch + x; \ |
p1 = (Uint8*)super->pixels + (y+1)*super->pitch + (x+w-1); \ |
i = h-2; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: \ |
*p0 = color; p0+=super->pitch; \ |
*p1 = color; p1+=super->pitch; \ |
case 3: \ |
*p0 = color; p0+=super->pitch; \ |
*p1 = color; p1+=super->pitch; \ |
case 2: \ |
*p0 = color; p0+=super->pitch; \ |
*p1 = color; p1+=super->pitch; \ |
case 1: \ |
*p0 = color; p0+=super->pitch; \ |
*p1 = color; p1+=super->pitch; \ |
}while( (i-=4) > 0 ); \ |
} |
#elif SDL_DRAW_BPP == 2 |
#define SDL_DRAW_PUTPIXEL \ |
i = w; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: \ |
*(Uint16*)p0 = color; p0+=2; \ |
*(Uint16*)p1 = color; p1+=2; \ |
case 3: \ |
*(Uint16*)p0 = color; p0+=2; \ |
*(Uint16*)p1 = color; p1+=2; \ |
case 2: \ |
*(Uint16*)p0 = color; p0+=2; \ |
*(Uint16*)p1 = color; p1+=2; \ |
case 1: \ |
*(Uint16*)p0 = color; p0+=2; \ |
*(Uint16*)p1 = color; p1+=2; \ |
}while( (i-=4) > 0 ); \ |
} \ |
if (h<3) return; \ |
p0 = (Uint8*)super->pixels + (y+1)*super->pitch + x*2; \ |
p1 = (Uint8*)super->pixels + (y+1)*super->pitch + (x+w-1)*2; \ |
i = h-2; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: \ |
*(Uint16*)p0 = color; p0+=super->pitch; \ |
*(Uint16*)p1 = color; p1+=super->pitch; \ |
case 3: \ |
*(Uint16*)p0 = color; p0+=super->pitch; \ |
*(Uint16*)p1 = color; p1+=super->pitch; \ |
case 2: \ |
*(Uint16*)p0 = color; p0+=super->pitch; \ |
*(Uint16*)p1 = color; p1+=super->pitch; \ |
case 1: \ |
*(Uint16*)p0 = color; p0+=super->pitch; \ |
*(Uint16*)p1 = color; p1+=super->pitch; \ |
}while( (i-=4) > 0 ); \ |
} |
#elif SDL_DRAW_BPP == 3 |
#define SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
if (SDL_BYTEORDER == SDL_BIG_ENDIAN) { \ |
p0[0] = colorbyte2; \ |
p0[1] = colorbyte1; \ |
p0[2] = colorbyte0; \ |
p1[0] = colorbyte2; \ |
p1[1] = colorbyte1; \ |
p1[2] = colorbyte0; \ |
} else { \ |
p0[0] = colorbyte0; \ |
p0[1] = colorbyte1; \ |
p0[2] = colorbyte2; \ |
p1[0] = colorbyte0; \ |
p1[1] = colorbyte1; \ |
p1[2] = colorbyte2; \ |
} |
#define SDL_DRAW_PUTPIXEL \ |
i = w; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: \ |
SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=3; p1+=3; \ |
case 3: \ |
SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=3; p1+=3; \ |
case 2: \ |
SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=3; p1+=3; \ |
case 1: \ |
SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=3; p1+=3; \ |
}while( (i-=4) > 0 ); \ |
} \ |
if (h<3) return; \ |
p0 = (Uint8*)super->pixels + (y+1)*super->pitch + x*3; \ |
p1 = (Uint8*)super->pixels + (y+1)*super->pitch + (x+w-1)*3; \ |
i = h-2; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: \ |
SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=super->pitch; p1+=super->pitch; \ |
case 3: \ |
SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=super->pitch; p1+=super->pitch; \ |
case 2: \ |
SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=super->pitch; p1+=super->pitch; \ |
case 1: \ |
SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=super->pitch; p1+=super->pitch; \ |
}while( (i-=4) > 0 ); \ |
} |
#elif SDL_DRAW_BPP == 4 |
#ifdef __linux__ |
#define SDL_DRAW_WMEMSET_START \ |
if (sizeof(wchar_t) == sizeof(Uint32)) { \ |
wmemset((wchar_t*)p0, color, w); \ |
wmemset((wchar_t*)p1, color, w); \ |
} else { |
#define SDL_DRAW_WMEMSET_END } |
#else |
#define SDL_DRAW_WMEMSET_START |
#define SDL_DRAW_WMEMSET_END |
#endif |
#define SDL_DRAW_PUTPIXEL \ |
SDL_DRAW_WMEMSET_START \ |
i = w; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: \ |
*(Uint32*)p0 = color; p0+=4; \ |
*(Uint32*)p1 = color; p1+=4; \ |
case 3: \ |
*(Uint32*)p0 = color; p0+=4; \ |
*(Uint32*)p1 = color; p1+=4; \ |
case 2: \ |
*(Uint32*)p0 = color; p0+=4; \ |
*(Uint32*)p1 = color; p1+=4; \ |
case 1: \ |
*(Uint32*)p0 = color; p0+=4; \ |
*(Uint32*)p1 = color; p1+=4; \ |
}while( (i-=4) > 0 ); \ |
} \ |
SDL_DRAW_WMEMSET_END \ |
if (h<3) return; \ |
p0 = (Uint8*)super->pixels + (y+1)*super->pitch + x*4; \ |
p1 = (Uint8*)super->pixels + (y+1)*super->pitch + (x+w-1)*4; \ |
i = h-2; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: \ |
*(Uint32*)p0 = color; p0+=super->pitch; \ |
*(Uint32*)p1 = color; p1+=super->pitch; \ |
case 3: \ |
*(Uint32*)p0 = color; p0+=super->pitch; \ |
*(Uint32*)p1 = color; p1+=super->pitch; \ |
case 2: \ |
*(Uint32*)p0 = color; p0+=super->pitch; \ |
*(Uint32*)p1 = color; p1+=super->pitch; \ |
case 1: \ |
*(Uint32*)p0 = color; p0+=super->pitch; \ |
*(Uint32*)p1 = color; p1+=super->pitch; \ |
}while( (i-=4) > 0 ); \ |
} |
#endif /*SDL_DRAW_BPP*/ |
void SDL_DRAWFUNCTION(SDL_Surface *super, |
Sint16 x, Sint16 y, Uint16 w, Uint16 h, |
Uint32 color) |
{ |
#if SDL_DRAW_BPP == 3 |
Uint8 colorbyte0 = (Uint8) (color & 0xff); |
Uint8 colorbyte1 = (Uint8) ((color >> 8) & 0xff); |
Uint8 colorbyte2 = (Uint8) ((color >> 16) & 0xff); |
#endif |
register Uint8 *p0; |
register Uint8 *p1; |
register Sint16 i; |
if (w==0 || h==0) return; |
p0 = (Uint8*)super->pixels + y * super->pitch + x * SDL_DRAW_BPP; |
p1 = (Uint8*)super->pixels + (y+h-1) * super->pitch + x * SDL_DRAW_BPP; |
SDL_DRAW_PUTPIXEL |
}/*Draw_Rect*/ |
#undef SDL_DRAW_PUTPIXEL |
#undef SDL_DRAW_PUTPIXEL_BPP_3_AUX |
#undef SDL_DRAW_WMEMSET_START |
#undef SDL_DRAW_WMEMSET_END |
/contrib/sdk/sources/SDL-1.2.2/SDL_draw/src/Draw_Round.c |
---|
0,0 → 1,326 |
/*! |
\file Draw_Round.c |
\author Mario Palomo <mpalomo@ihman.com> |
\author Jose M. de la Huerga Fernández |
\author Pepe González Mora |
\date 05-2002 |
This library is free software; you can redistribute it and/or |
modify it under the terms of the GNU Library General Public |
License as published by the Free Software Foundation; either |
version 2 of the License, or (at your option) any later version. |
This library 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 |
Library General Public License for more details. |
You should have received a copy of the GNU Library General Public |
License along with this library; if not, write to the Free Foundation, |
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*/ |
/*Circle arcs*/ |
#define SDL_DRAW_PUTPIXEL_CIRCLE_BPP(A, B, C) \ |
*(##A##(##B##(Uint8*)super->pixels + (Ycenter-x)*super->pitch + \ |
(Xcenter - corner)*SDL_DRAW_BPP)) = C##; \ |
*(##A##(##B##(Uint8*)super->pixels + (Ycenter-corner)*super->pitch + \ |
(Xcenter - x)*SDL_DRAW_BPP)) = C##; \ |
*(##A##(##B##(Uint8*)super->pixels + (Ycenter-corner)*super->pitch + \ |
(X2center + x)*SDL_DRAW_BPP)) = C##; \ |
*(##A##(##B##(Uint8*)super->pixels + (Ycenter-x)*super->pitch + \ |
(X2center + corner)*SDL_DRAW_BPP)) = C##; \ |
*(##A##(##B##(Uint8*)super->pixels + (Y2center+corner)*super->pitch + \ |
(X2center + x)*SDL_DRAW_BPP)) = C##; \ |
*(##A##(##B##(Uint8*)super->pixels + (Y2center+x)*super->pitch + \ |
(X2center + corner)*SDL_DRAW_BPP)) = C##; \ |
*(##A##(##B##(Uint8*)super->pixels + (Y2center+corner)*super->pitch + \ |
(Xcenter - x)*SDL_DRAW_BPP)) = C##; \ |
*(##A##(##B##(Uint8*)super->pixels + (Y2center+x)*super->pitch + \ |
(Xcenter - corner)*SDL_DRAW_BPP)) = C##; |
#if SDL_DRAW_BPP == 1 |
#define SDL_DRAW_PUTPIXEL_CIRCLE SDL_DRAW_PUTPIXEL_CIRCLE_BPP(0+,0+,color) |
#elif SDL_DRAW_BPP == 2 |
#define SDL_DRAW_PUTPIXEL_CIRCLE SDL_DRAW_PUTPIXEL_CIRCLE_BPP((Uint16*),0+,color) |
#elif SDL_DRAW_BPP == 3 |
#define SDL_DRAW_PUTPIXEL_CIRCLE \ |
SDL_DRAW_PUTPIXEL_CIRCLE_BPP(0+,1+,colorbyte1) \ |
if (SDL_BYTEORDER == SDL_BIG_ENDIAN) { \ |
SDL_DRAW_PUTPIXEL_CIRCLE_BPP(0+,0+,colorbyte2) \ |
SDL_DRAW_PUTPIXEL_CIRCLE_BPP(0+,2+,colorbyte0) \ |
}else{ \ |
SDL_DRAW_PUTPIXEL_CIRCLE_BPP(0+,0+,colorbyte0) \ |
SDL_DRAW_PUTPIXEL_CIRCLE_BPP(0+,2+,colorbyte2) \ |
} |
#elif SDL_DRAW_BPP == 4 |
#define SDL_DRAW_PUTPIXEL_CIRCLE SDL_DRAW_PUTPIXEL_CIRCLE_BPP((Uint32*),0+,color) |
#endif /*SDL_DRAW_BPP*/ |
/*Rectangles*/ |
#if SDL_DRAW_BPP == 1 |
#define SDL_DRAW_PUTPIXEL \ |
memset(p0, color, dx); \ |
memset(p1, color, dx); \ |
\ |
if (h<3) return; \ |
p0 = (Uint8*)super->pixels + Ycenter*super->pitch + x0; \ |
p1 = (Uint8*)super->pixels + Ycenter*super->pitch + x0+w-1; \ |
i=dy; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: \ |
*p0 = color; p0+=super->pitch; \ |
*p1 = color; p1+=super->pitch; \ |
case 3: \ |
*p0 = color; p0+=super->pitch; \ |
*p1 = color; p1+=super->pitch; \ |
case 2: \ |
*p0 = color; p0+=super->pitch; \ |
*p1 = color; p1+=super->pitch; \ |
case 1: \ |
*p0 = color; p0+=super->pitch; \ |
*p1 = color; p1+=super->pitch; \ |
}while( (i-=4) > 0 ); \ |
} |
#elif SDL_DRAW_BPP == 2 |
#define SDL_DRAW_PUTPIXEL \ |
i=dx; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: \ |
*(Uint16*)p0 = color; p0+=2; \ |
*(Uint16*)p1 = color; p1+=2; \ |
case 3: \ |
*(Uint16*)p0 = color; p0+=2; \ |
*(Uint16*)p1 = color; p1+=2; \ |
case 2: \ |
*(Uint16*)p0 = color; p0+=2; \ |
*(Uint16*)p1 = color; p1+=2; \ |
case 1: \ |
*(Uint16*)p0 = color; p0+=2; \ |
*(Uint16*)p1 = color; p1+=2; \ |
}while( (i-=4) > 0 ); \ |
} \ |
if (h<3) return; \ |
p0 = (Uint8*)super->pixels + Ycenter*super->pitch + x0*2; \ |
p1 = (Uint8*)super->pixels + Ycenter*super->pitch + (x0+w-1)*2; \ |
i=dy; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: \ |
*(Uint16*)p0 = color; p0+=super->pitch; \ |
*(Uint16*)p1 = color; p1+=super->pitch; \ |
case 3: \ |
*(Uint16*)p0 = color; p0+=super->pitch; \ |
*(Uint16*)p1 = color; p1+=super->pitch; \ |
case 2: \ |
*(Uint16*)p0 = color; p0+=super->pitch; \ |
*(Uint16*)p1 = color; p1+=super->pitch; \ |
case 1: \ |
*(Uint16*)p0 = color; p0+=super->pitch; \ |
*(Uint16*)p1 = color; p1+=super->pitch; \ |
}while( (i-=4) > 0 ); \ |
} |
#elif SDL_DRAW_BPP == 3 |
#define SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
if (SDL_BYTEORDER == SDL_BIG_ENDIAN) { \ |
p0[0] = colorbyte2; \ |
p0[1] = colorbyte1; \ |
p0[2] = colorbyte0; \ |
p1[0] = colorbyte2; \ |
p1[1] = colorbyte1; \ |
p1[2] = colorbyte0; \ |
} else { \ |
p0[0] = colorbyte0; \ |
p0[1] = colorbyte1; \ |
p0[2] = colorbyte2; \ |
p1[0] = colorbyte0; \ |
p1[1] = colorbyte1; \ |
p1[2] = colorbyte2; \ |
} |
#define SDL_DRAW_PUTPIXEL \ |
i=dx; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: \ |
SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=3; p1+=3; \ |
case 3: \ |
SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=3; p1+=3; \ |
case 2: \ |
SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=3; p1+=3; \ |
case 1: \ |
SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=3; p1+=3; \ |
}while( (i-=4) > 0 ); \ |
} \ |
if (h<3) return; \ |
p0 = (Uint8*)super->pixels + Ycenter*super->pitch + x0*3; \ |
p1 = (Uint8*)super->pixels + Ycenter*super->pitch + (x0+w-1)*3; \ |
i=dy; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: \ |
SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=super->pitch; p1+=super->pitch; \ |
case 3: \ |
SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=super->pitch; p1+=super->pitch; \ |
case 2: \ |
SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=super->pitch; p1+=super->pitch; \ |
case 1: \ |
SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
p0+=super->pitch; p1+=super->pitch; \ |
}while( (i-=4) > 0 ); \ |
} |
#elif SDL_DRAW_BPP == 4 |
#ifdef __linux__ |
#define SDL_DRAW_WMEMSET_START \ |
if (sizeof(wchar_t) == sizeof(Uint32)) { \ |
wmemset((wchar_t*)p0, color, dx); \ |
wmemset((wchar_t*)p1, color, dx); \ |
} else { |
#define SDL_DRAW_WMEMSET_END } |
#else |
#define SDL_DRAW_WMEMSET_START |
#define SDL_DRAW_WMEMSET_END |
#endif |
#define SDL_DRAW_PUTPIXEL \ |
SDL_DRAW_WMEMSET_START \ |
i=dx; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: \ |
*(Uint32*)p0 = color; p0+=4; \ |
*(Uint32*)p1 = color; p1+=4; \ |
case 3: \ |
*(Uint32*)p0 = color; p0+=4; \ |
*(Uint32*)p1 = color; p1+=4; \ |
case 2: \ |
*(Uint32*)p0 = color; p0+=4; \ |
*(Uint32*)p1 = color; p1+=4; \ |
case 1: \ |
*(Uint32*)p0 = color; p0+=4; \ |
*(Uint32*)p1 = color; p1+=4; \ |
}while( (i-=4) > 0 ); \ |
} \ |
SDL_DRAW_WMEMSET_END \ |
if (h<3) return; \ |
p0 = (Uint8*)super->pixels + Ycenter*super->pitch + x0*4; \ |
p1 = (Uint8*)super->pixels + Ycenter*super->pitch + (x0+w-1)*4; \ |
i=dy; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: \ |
*(Uint32*)p0 = color; p0+=super->pitch; \ |
*(Uint32*)p1 = color; p1+=super->pitch; \ |
case 3: \ |
*(Uint32*)p0 = color; p0+=super->pitch; \ |
*(Uint32*)p1 = color; p1+=super->pitch; \ |
case 2: \ |
*(Uint32*)p0 = color; p0+=super->pitch; \ |
*(Uint32*)p1 = color; p1+=super->pitch; \ |
case 1: \ |
*(Uint32*)p0 = color; p0+=super->pitch; \ |
*(Uint32*)p1 = color; p1+=super->pitch; \ |
}while( (i-=4) > 0 ); \ |
} |
#endif /*SDL_DRAW_BPP*/ |
void SDL_DRAWFUNCTION(SDL_Surface *super, |
Sint16 x0,Sint16 y0, Uint16 w,Uint16 h, |
Uint16 corner, Uint32 color) |
{ |
#if SDL_DRAW_BPP == 3 |
Uint8 colorbyte0 = (Uint8) (color & 0xff); |
Uint8 colorbyte1 = (Uint8) ((color >> 8) & 0xff); |
Uint8 colorbyte2 = (Uint8) ((color >> 16) & 0xff); |
#endif |
register Uint8 *p0; |
register Uint8 *p1; |
register Sint16 i; |
Sint16 dx, dy; |
Sint16 Xcenter, Ycenter, X2center, Y2center; |
Sint16 x = 0; |
Sint16 rightInc = 6; |
Sint16 d, diagonalInc; |
if (w==0 || h==0) return; |
/*TODO: We can do better :-)*/ |
if (corner!=0) { |
d = w<h ? w : h; |
--corner; |
if (corner!=0 && corner+2 >= d ) { |
if (corner+2 == d) --corner; |
else corner = 0; |
} |
} |
d = 3 - (corner<<1); |
diagonalInc = 10 - (corner<<2); |
/*Rectangles*/ |
dx = w - (corner<<1); |
Xcenter = x0+corner; |
dy = h - (corner<<1); |
Ycenter = y0+corner; |
/*Centers*/ |
X2center=Xcenter+dx-1; |
Y2center=Ycenter+dy-1; |
p0 = (Uint8*)super->pixels + y0 * super->pitch + Xcenter*SDL_DRAW_BPP; |
p1 = (Uint8*)super->pixels + (y0+h-1) * super->pitch + Xcenter*SDL_DRAW_BPP; |
SDL_DRAW_PUTPIXEL |
while (x < corner) { |
SDL_DRAW_PUTPIXEL_CIRCLE |
if (d >= 0) { |
d += diagonalInc; |
diagonalInc += 8; |
--corner; |
} else { |
d += rightInc; |
diagonalInc += 4; |
} |
rightInc += 4; |
++x; |
}/*while*/ |
}/*Draw_Round*/ |
#undef SDL_DRAW_PUTPIXEL |
#undef SDL_DRAW_PUTPIXEL_CIRCLE |
#undef SDL_DRAW_PUTPIXEL_CIRCLE_BPP |
#undef SDL_DRAW_WMEMSET_START |
#undef SDL_DRAW_WMEMSET_END |
/contrib/sdk/sources/SDL-1.2.2/SDL_draw/src/Draw_VLine.c |
---|
0,0 → 1,109 |
/*! |
\file Draw_VLine.c |
\author Mario Palomo <mpalomo@ihman.com> |
\author Jose M. de la Huerga Fernández |
\author Pepe González Mora |
\date 05-2002 |
This library is free software; you can redistribute it and/or |
modify it under the terms of the GNU Library General Public |
License as published by the Free Software Foundation; either |
version 2 of the License, or (at your option) any later version. |
This library 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 |
Library General Public License for more details. |
You should have received a copy of the GNU Library General Public |
License along with this library; if not, write to the Free Foundation, |
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*/ |
#if SDL_DRAW_BPP == 1 |
#define SDL_DRAW_PUTPIXEL \ |
i = y1-y0+1; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: *p = color; p+=super->pitch; \ |
case 3: *p = color; p+=super->pitch; \ |
case 2: *p = color; p+=super->pitch; \ |
case 1: *p = color; p+=super->pitch; \ |
}while( (i-=4) > 0 ); \ |
} |
#elif SDL_DRAW_BPP == 2 |
#define SDL_DRAW_PUTPIXEL \ |
i = y1-y0+1; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: *(Uint16*)p = color; p+=super->pitch; \ |
case 3: *(Uint16*)p = color; p+=super->pitch; \ |
case 2: *(Uint16*)p = color; p+=super->pitch; \ |
case 1: *(Uint16*)p = color; p+=super->pitch; \ |
}while( (i-=4) > 0 ); \ |
} |
#elif SDL_DRAW_BPP == 3 |
#define SDL_DRAW_PUTPIXEL_BPP_3_AUX \ |
if (SDL_BYTEORDER == SDL_BIG_ENDIAN) { \ |
p[0] = colorbyte2; \ |
p[1] = colorbyte1; \ |
p[2] = colorbyte0; \ |
} else { \ |
p[0] = colorbyte0; \ |
p[1] = colorbyte1; \ |
p[2] = colorbyte2; \ |
} |
#define SDL_DRAW_PUTPIXEL \ |
i = y1-y0+1; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: SDL_DRAW_PUTPIXEL_BPP_3_AUX p+=super->pitch; \ |
case 3: SDL_DRAW_PUTPIXEL_BPP_3_AUX p+=super->pitch; \ |
case 2: SDL_DRAW_PUTPIXEL_BPP_3_AUX p+=super->pitch; \ |
case 1: SDL_DRAW_PUTPIXEL_BPP_3_AUX p+=super->pitch; \ |
}while( (i-=4) > 0 ); \ |
} |
#elif SDL_DRAW_BPP == 4 |
#define SDL_DRAW_PUTPIXEL \ |
i = y1-y0+1; \ |
switch( i % 4 ) { \ |
do{ \ |
case 0: *(Uint32*)p = color; p+=super->pitch; \ |
case 3: *(Uint32*)p = color; p+=super->pitch; \ |
case 2: *(Uint32*)p = color; p+=super->pitch; \ |
case 1: *(Uint32*)p = color; p+=super->pitch; \ |
}while( (i-=4) > 0 ); \ |
} |
#endif /*SDL_DRAW_BPP*/ |
void SDL_DRAWFUNCTION(SDL_Surface *super, |
Sint16 x0,Sint16 y0, Sint16 y1, |
Uint32 color) |
{ |
#if SDL_DRAW_BPP == 3 |
Uint8 colorbyte0 = (Uint8) (color & 0xff); |
Uint8 colorbyte1 = (Uint8) ((color >> 8) & 0xff); |
Uint8 colorbyte2 = (Uint8) ((color >> 16) & 0xff); |
#endif |
register Uint8 *p; |
register Sint16 i; |
if (y0 > y1) { i=y1; y1=y0; y0=i; } |
p = (Uint8*)super->pixels + y0 * super->pitch + x0 * SDL_DRAW_BPP; |
SDL_DRAW_PUTPIXEL |
}/*Draw_VLine*/ |
#undef SDL_DRAW_PUTPIXEL |
#undef SDL_DRAW_PUTPIXEL_BPP_3_AUX |
/contrib/sdk/sources/SDL-1.2.2/SDL_draw/src/SDL_draw.c |
---|
0,0 → 1,546 |
/*! |
\file SDL_draw.c |
\author Mario Palomo Torrero <mpalomo@ihman.com> |
\author Jose M. de la Huerga Fernández |
\author Pepe González Mora |
\date 05-2002 |
Drawing primitives for SDL. Main implementation file. |
This library is free software; you can redistribute it and/or |
modify it under the terms of the GNU Library General Public |
License as published by the Free Software Foundation; either |
version 2 of the License, or (at your option) any later version. |
This library 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 |
Library General Public License for more details. |
You should have received a copy of the GNU Library General Public |
License along with this library; if not, write to the Free Foundation, |
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*/ |
#include "SDL_draw.h" |
#include <stdio.h> |
#include <stdlib.h> |
#include <string.h> |
#include <wchar.h> /*wmemset*/ |
/*==================== BEGIN of Draw_Pixel ======================*/ |
#define SDL_DRAW_BPP 1 |
#define SDL_DRAWFUNCTION Draw_Pixel_1 |
#include "Draw_Pixel.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 2 |
#define SDL_DRAWFUNCTION Draw_Pixel_2 |
#include "Draw_Pixel.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 3 |
#define SDL_DRAWFUNCTION Draw_Pixel_3 |
#include "Draw_Pixel.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 4 |
#define SDL_DRAWFUNCTION Draw_Pixel_4 |
#include "Draw_Pixel.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
static |
void Draw_Pixel_error(SDL_Surface *super, |
Sint16 x, Sint16 y, Uint32 color) |
{ |
SDL_printf("SDL_draw: Draw_Pixel ERROR!!." |
" Have you call to SDL_Draw_Init()?\n"); |
exit(-1); |
} |
void (*Draw_Pixel)(SDL_Surface *super, |
Sint16 x, Sint16 y, Uint32 color) = Draw_Pixel_error; |
/*===================== END of Draw_Pixel =======================*/ |
/*==================== BEGIN of Draw_Line ======================*/ |
#define SDL_DRAW_BPP 1 |
#define SDL_DRAWFUNCTION Draw_Line_1 |
#include "Draw_Line.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 2 |
#define SDL_DRAWFUNCTION Draw_Line_2 |
#include "Draw_Line.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 3 |
#define SDL_DRAWFUNCTION Draw_Line_3 |
#include "Draw_Line.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 4 |
#define SDL_DRAWFUNCTION Draw_Line_4 |
#include "Draw_Line.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
static |
void Draw_Line_error(SDL_Surface *super, |
Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, |
Uint32 color) |
{ |
SDL_printf("SDL_draw: Draw_Line ERROR!!." |
" Have you call to SDL_Draw_Init()?\n"); |
exit(-1); |
} |
void (*Draw_Line)(SDL_Surface *super, |
Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, |
Uint32 color) = Draw_Line_error; |
/*===================== END of Draw_Line =======================*/ |
/*=================== BEGIN of Draw_Circle =====================*/ |
#define SDL_DRAW_BPP 1 |
#define SDL_DRAWFUNCTION Draw_Circle_1 |
#include "Draw_Circle.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 2 |
#define SDL_DRAWFUNCTION Draw_Circle_2 |
#include "Draw_Circle.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 3 |
#define SDL_DRAWFUNCTION Draw_Circle_3 |
#include "Draw_Circle.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 4 |
#define SDL_DRAWFUNCTION Draw_Circle_4 |
#include "Draw_Circle.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
static |
void Draw_Circle_error(SDL_Surface *super, |
Sint16 x0, Sint16 y0, Uint16 r, |
Uint32 color) |
{ |
SDL_printf("SDL_draw: Draw_Circle ERROR!!." |
" Have you call to SDL_Draw_Init()?\n"); |
exit(-1); |
} |
void (*Draw_Circle)(SDL_Surface *super, |
Sint16 x0, Sint16 y0, Uint16 r, |
Uint32 color) = Draw_Circle_error; |
/*==================== END of Draw_Circle ======================*/ |
/*================= BEGIN of Draw_FillCircle ===================*/ |
#define SDL_DRAW_BPP 1 |
#define SDL_DRAWFUNCTION Draw_FillCircle_1 |
#include "Draw_FillCircle.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 2 |
#define SDL_DRAWFUNCTION Draw_FillCircle_2 |
#include "Draw_FillCircle.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 3 |
#define SDL_DRAWFUNCTION Draw_FillCircle_3 |
#include "Draw_FillCircle.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 4 |
#define SDL_DRAWFUNCTION Draw_FillCircle_4 |
#include "Draw_FillCircle.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
static |
void Draw_FillCircle_error(SDL_Surface *super, |
Sint16 x0, Sint16 y0, Uint16 r, |
Uint32 color) |
{ |
SDL_printf("SDL_draw: Draw_FillCircle ERROR!!." |
" Have you call to SDL_Draw_Init()?\n"); |
exit(-1); |
} |
void (*Draw_FillCircle)(SDL_Surface *super, |
Sint16 x0, Sint16 y0, Uint16 r, |
Uint32 color) = Draw_FillCircle_error; |
/*================== END of Draw_FillCircle ====================*/ |
/*=================== BEGIN of Draw_HLine =====================*/ |
#define SDL_DRAW_BPP 1 |
#define SDL_DRAWFUNCTION Draw_HLine_1 |
#include "Draw_HLine.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 2 |
#define SDL_DRAWFUNCTION Draw_HLine_2 |
#include "Draw_HLine.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 3 |
#define SDL_DRAWFUNCTION Draw_HLine_3 |
#include "Draw_HLine.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 4 |
#define SDL_DRAWFUNCTION Draw_HLine_4 |
#include "Draw_HLine.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
static |
void Draw_HLine_error(SDL_Surface *super, |
Sint16 x0,Sint16 y0, Sint16 x1, |
Uint32 color) |
{ |
SDL_printf("SDL_draw: Draw_HLine ERROR!!." |
" Have you call to SDL_Draw_Init()?\n"); |
exit(-1); |
} |
void (*Draw_HLine)(SDL_Surface *super, |
Sint16 x0,Sint16 y0, Sint16 x1, |
Uint32 color) = Draw_HLine_error; |
/*==================== END of Draw_HLine ======================*/ |
/*=================== BEGIN of Draw_VLine =====================*/ |
#define SDL_DRAW_BPP 1 |
#define SDL_DRAWFUNCTION Draw_VLine_1 |
#include "Draw_VLine.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 2 |
#define SDL_DRAWFUNCTION Draw_VLine_2 |
#include "Draw_VLine.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 3 |
#define SDL_DRAWFUNCTION Draw_VLine_3 |
#include "Draw_VLine.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 4 |
#define SDL_DRAWFUNCTION Draw_VLine_4 |
#include "Draw_VLine.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
static |
void Draw_VLine_error(SDL_Surface *super, |
Sint16 x0,Sint16 y0, Sint16 y1, |
Uint32 color) |
{ |
SDL_printf("SDL_draw: Draw_VLine ERROR!!." |
" Have you call to SDL_Draw_Init()?\n"); |
exit(-1); |
} |
void (*Draw_VLine)(SDL_Surface *super, |
Sint16 x0,Sint16 y0, Sint16 y1, |
Uint32 color) = Draw_VLine_error; |
/*==================== END of Draw_VLine ======================*/ |
/*==================== BEGIN of Draw_Rect ======================*/ |
#define SDL_DRAW_BPP 1 |
#define SDL_DRAWFUNCTION Draw_Rect_1 |
#include "Draw_Rect.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 2 |
#define SDL_DRAWFUNCTION Draw_Rect_2 |
#include "Draw_Rect.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 3 |
#define SDL_DRAWFUNCTION Draw_Rect_3 |
#include "Draw_Rect.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 4 |
#define SDL_DRAWFUNCTION Draw_Rect_4 |
#include "Draw_Rect.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
static |
void Draw_Rect_error(SDL_Surface *super, |
Sint16 x,Sint16 y, Uint16 w,Uint16 h, |
Uint32 color) |
{ |
SDL_printf("SDL_draw: Draw_Rect ERROR!!." |
" Have you call to SDL_Draw_Init()?\n"); |
exit(-1); |
} |
void (*Draw_Rect)(SDL_Surface *super, |
Sint16 x,Sint16 y, Uint16 w,Uint16 h, |
Uint32 color) = Draw_Rect_error; |
/*===================== END of Draw_Rect =======================*/ |
/*=================== BEGIN of Draw_Ellipse ====================*/ |
#define SDL_DRAW_BPP 1 |
#define SDL_DRAWFUNCTION Draw_Ellipse_1 |
#include "Draw_Ellipse.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 2 |
#define SDL_DRAWFUNCTION Draw_Ellipse_2 |
#include "Draw_Ellipse.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 3 |
#define SDL_DRAWFUNCTION Draw_Ellipse_3 |
#include "Draw_Ellipse.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 4 |
#define SDL_DRAWFUNCTION Draw_Ellipse_4 |
#include "Draw_Ellipse.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
static |
void Draw_Ellipse_error(SDL_Surface *super, |
Sint16 x0, Sint16 y0, |
Uint16 Xradius, Uint16 Yradius, |
Uint32 color) |
{ |
SDL_printf("SDL_draw: Draw_Ellipse ERROR!!." |
" Have you call to SDL_Draw_Init()?\n"); |
exit(-1); |
} |
void (*Draw_Ellipse)(SDL_Surface *super, |
Sint16 x0, Sint16 y0, |
Uint16 Xradius, Uint16 Yradius, |
Uint32 color) = Draw_Ellipse_error; |
/*==================== END of Draw_Ellipse =====================*/ |
/*================= BEGIN of Draw_FillEllipse ==================*/ |
#define SDL_DRAW_BPP 1 |
#define SDL_DRAWFUNCTION Draw_FillEllipse_1 |
#include "Draw_FillEllipse.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 2 |
#define SDL_DRAWFUNCTION Draw_FillEllipse_2 |
#include "Draw_FillEllipse.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 3 |
#define SDL_DRAWFUNCTION Draw_FillEllipse_3 |
#include "Draw_FillEllipse.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 4 |
#define SDL_DRAWFUNCTION Draw_FillEllipse_4 |
#include "Draw_FillEllipse.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
static |
void Draw_FillEllipse_error(SDL_Surface *super, |
Sint16 x0, Sint16 y0, |
Uint16 Xradius, Uint16 Yradius, |
Uint32 color) |
{ |
SDL_printf("SDL_draw: Draw_FillEllipse ERROR!!." |
" Have you call to SDL_Draw_Init()?\n"); |
exit(-1); |
} |
void (*Draw_FillEllipse)(SDL_Surface *super, |
Sint16 x0, Sint16 y0, |
Uint16 Xradius, Uint16 Yradius, |
Uint32 color) = Draw_FillEllipse_error; |
/*================== END of Draw_FillEllipse ===================*/ |
/*==================== BEGIN of Draw_Round =====================*/ |
#define SDL_DRAW_BPP 1 |
#define SDL_DRAWFUNCTION Draw_Round_1 |
#include "Draw_Round.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 2 |
#define SDL_DRAWFUNCTION Draw_Round_2 |
#include "Draw_Round.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 3 |
#define SDL_DRAWFUNCTION Draw_Round_3 |
#include "Draw_Round.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 4 |
#define SDL_DRAWFUNCTION Draw_Round_4 |
#include "Draw_Round.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
static |
void Draw_Round_error(SDL_Surface *super, |
Sint16 x0,Sint16 y0, Uint16 w,Uint16 h, |
Uint16 corner, Uint32 color) |
{ |
SDL_printf("SDL_draw: Draw_Round ERROR!!." |
" Have you call to SDL_Draw_Init()?\n"); |
exit(-1); |
} |
void (*Draw_Round)(SDL_Surface *super, |
Sint16 x0,Sint16 y0, Uint16 w,Uint16 h, |
Uint16 corner, Uint32 color) = Draw_Round_error; |
/*===================== END of Draw_Round ======================*/ |
/*================== BEGIN of Draw_FillRound ===================*/ |
#define SDL_DRAW_BPP 1 |
#define SDL_DRAWFUNCTION Draw_FillRound_1 |
#include "Draw_FillRound.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 2 |
#define SDL_DRAWFUNCTION Draw_FillRound_2 |
#include "Draw_FillRound.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 3 |
#define SDL_DRAWFUNCTION Draw_FillRound_3 |
#include "Draw_FillRound.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
#define SDL_DRAW_BPP 4 |
#define SDL_DRAWFUNCTION Draw_FillRound_4 |
#include "Draw_FillRound.c" |
#undef SDL_DRAWFUNCTION |
#undef SDL_DRAW_BPP |
static |
void Draw_FillRound_error(SDL_Surface *super, |
Sint16 x0,Sint16 y0, Uint16 w,Uint16 h, |
Uint16 corner, Uint32 color) |
{ |
SDL_printf("SDL_draw: Draw_FillRound ERROR!!." |
" Have you call to SDL_Draw_Init()?\n"); |
exit(-1); |
} |
void (*Draw_FillRound)(SDL_Surface *super, |
Sint16 x0,Sint16 y0, Uint16 w,Uint16 h, |
Uint16 corner, Uint32 color) = Draw_FillRound_error; |
/*=================== END of Draw_FillRound ====================*/ |
/*Assignment of function pointers:*/ |
#define SDL_DRAW_FUNCTIONS_BPP(x) \ |
Draw_Pixel = Draw_Pixel_##x; \ |
Draw_Line = Draw_Line_##x; \ |
Draw_Circle = Draw_Circle_##x; \ |
Draw_FillCircle = Draw_FillCircle_##x; \ |
Draw_HLine = Draw_HLine_##x; \ |
Draw_VLine = Draw_VLine_##x; \ |
Draw_Rect = Draw_Rect_##x; \ |
Draw_Ellipse = Draw_Ellipse_##x; \ |
Draw_FillEllipse = Draw_FillEllipse_##x; \ |
Draw_Round = Draw_Round_##x; \ |
Draw_FillRound = Draw_FillRound_##x |
/*IMPORTANT: Call this function AFTER the call to 'SDL_SetVideoMode'*/ |
void Draw_Init(void) |
{ |
SDL_Surface *screen = SDL_GetVideoSurface(); |
if (!screen) { |
SDL_printf("SDL_draw: SDL_Draw_Init ERROR!!." |
" Video Surface not found\n"); |
exit(-2); |
} |
switch(screen->format->BytesPerPixel) { |
case 1: |
SDL_DRAW_FUNCTIONS_BPP(1); |
break; |
case 2: |
SDL_DRAW_FUNCTIONS_BPP(2); |
break; |
case 3: |
SDL_DRAW_FUNCTIONS_BPP(3); |
break; |
case 4: |
SDL_DRAW_FUNCTIONS_BPP(4); |
break; |
}/*switch*/ |
}/*Draw_Init*/ |
#undef SDL_DRAW_FUNCTIONS_BPP |