Use TouchGFX
This commit is contained in:
		
							
								
								
									
										351
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/README
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										351
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/README
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,351 @@
 | 
			
		||||
The Independent JPEG Group's JPEG software
 | 
			
		||||
==========================================
 | 
			
		||||
 | 
			
		||||
README for release 8d of 15-Jan-2012
 | 
			
		||||
====================================
 | 
			
		||||
 | 
			
		||||
This distribution contains the eighth public release of the Independent JPEG
 | 
			
		||||
Group's free JPEG software.  You are welcome to redistribute this software and
 | 
			
		||||
to use it for any purpose, subject to the conditions under LEGAL ISSUES, below.
 | 
			
		||||
 | 
			
		||||
This software is the work of Tom Lane, Guido Vollbeding, Philip Gladstone,
 | 
			
		||||
Bill Allombert, Jim Boucher, Lee Crocker, Bob Friesenhahn, Ben Jackson,
 | 
			
		||||
Julian Minguillon, Luis Ortiz, George Phillips, Davide Rossi, Ge' Weijers,
 | 
			
		||||
and other members of the Independent JPEG Group.
 | 
			
		||||
 | 
			
		||||
IJG is not affiliated with the ISO/IEC JTC1/SC29/WG1 standards committee
 | 
			
		||||
(also known as JPEG, together with ITU-T SG16).
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
DOCUMENTATION ROADMAP
 | 
			
		||||
=====================
 | 
			
		||||
 | 
			
		||||
This file contains the following sections:
 | 
			
		||||
 | 
			
		||||
OVERVIEW            General description of JPEG and the IJG software.
 | 
			
		||||
LEGAL ISSUES        Copyright, lack of warranty, terms of distribution.
 | 
			
		||||
REFERENCES          Where to learn more about JPEG.
 | 
			
		||||
ARCHIVE LOCATIONS   Where to find newer versions of this software.
 | 
			
		||||
ACKNOWLEDGMENTS     Special thanks.
 | 
			
		||||
FILE FORMAT WARS    Software *not* to get.
 | 
			
		||||
TO DO               Plans for future IJG releases.
 | 
			
		||||
 | 
			
		||||
Other documentation files in the distribution are:
 | 
			
		||||
 | 
			
		||||
User documentation:
 | 
			
		||||
  install.txt       How to configure and install the IJG software.
 | 
			
		||||
  usage.txt         Usage instructions for cjpeg, djpeg, jpegtran,
 | 
			
		||||
                    rdjpgcom, and wrjpgcom.
 | 
			
		||||
  *.1               Unix-style man pages for programs (same info as usage.txt).
 | 
			
		||||
  wizard.txt        Advanced usage instructions for JPEG wizards only.
 | 
			
		||||
  change.log        Version-to-version change highlights.
 | 
			
		||||
Programmer and internal documentation:
 | 
			
		||||
  libjpeg.txt       How to use the JPEG library in your own programs.
 | 
			
		||||
  example.c         Sample code for calling the JPEG library.
 | 
			
		||||
  structure.txt     Overview of the JPEG library's internal structure.
 | 
			
		||||
  filelist.txt      Road map of IJG files.
 | 
			
		||||
  coderules.txt     Coding style rules --- please read if you contribute code.
 | 
			
		||||
 | 
			
		||||
Please read at least the files install.txt and usage.txt.  Some information
 | 
			
		||||
can also be found in the JPEG FAQ (Frequently Asked Questions) article.  See
 | 
			
		||||
ARCHIVE LOCATIONS below to find out where to obtain the FAQ article.
 | 
			
		||||
 | 
			
		||||
If you want to understand how the JPEG code works, we suggest reading one or
 | 
			
		||||
more of the REFERENCES, then looking at the documentation files (in roughly
 | 
			
		||||
the order listed) before diving into the code.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
OVERVIEW
 | 
			
		||||
========
 | 
			
		||||
 | 
			
		||||
This package contains C software to implement JPEG image encoding, decoding,
 | 
			
		||||
and transcoding.  JPEG (pronounced "jay-peg") is a standardized compression
 | 
			
		||||
method for full-color and gray-scale images.
 | 
			
		||||
 | 
			
		||||
This software implements JPEG baseline, extended-sequential, and progressive
 | 
			
		||||
compression processes.  Provision is made for supporting all variants of these
 | 
			
		||||
processes, although some uncommon parameter settings aren't implemented yet.
 | 
			
		||||
We have made no provision for supporting the hierarchical or lossless
 | 
			
		||||
processes defined in the standard.
 | 
			
		||||
 | 
			
		||||
We provide a set of library routines for reading and writing JPEG image files,
 | 
			
		||||
plus two sample applications "cjpeg" and "djpeg", which use the library to
 | 
			
		||||
perform conversion between JPEG and some other popular image file formats.
 | 
			
		||||
The library is intended to be reused in other applications.
 | 
			
		||||
 | 
			
		||||
In order to support file conversion and viewing software, we have included
 | 
			
		||||
considerable functionality beyond the bare JPEG coding/decoding capability;
 | 
			
		||||
for example, the color quantization modules are not strictly part of JPEG
 | 
			
		||||
decoding, but they are essential for output to colormapped file formats or
 | 
			
		||||
colormapped displays.  These extra functions can be compiled out of the
 | 
			
		||||
library if not required for a particular application.
 | 
			
		||||
 | 
			
		||||
We have also included "jpegtran", a utility for lossless transcoding between
 | 
			
		||||
different JPEG processes, and "rdjpgcom" and "wrjpgcom", two simple
 | 
			
		||||
applications for inserting and extracting textual comments in JFIF files.
 | 
			
		||||
 | 
			
		||||
The emphasis in designing this software has been on achieving portability and
 | 
			
		||||
flexibility, while also making it fast enough to be useful.  In particular,
 | 
			
		||||
the software is not intended to be read as a tutorial on JPEG.  (See the
 | 
			
		||||
REFERENCES section for introductory material.)  Rather, it is intended to
 | 
			
		||||
be reliable, portable, industrial-strength code.  We do not claim to have
 | 
			
		||||
achieved that goal in every aspect of the software, but we strive for it.
 | 
			
		||||
 | 
			
		||||
We welcome the use of this software as a component of commercial products.
 | 
			
		||||
No royalty is required, but we do ask for an acknowledgement in product
 | 
			
		||||
documentation, as described under LEGAL ISSUES.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
LEGAL ISSUES
 | 
			
		||||
============
 | 
			
		||||
 | 
			
		||||
In plain English:
 | 
			
		||||
 | 
			
		||||
1. We don't promise that this software works.  (But if you find any bugs,
 | 
			
		||||
   please let us know!)
 | 
			
		||||
2. You can use this software for whatever you want.  You don't have to pay us.
 | 
			
		||||
3. You may not pretend that you wrote this software.  If you use it in a
 | 
			
		||||
   program, you must acknowledge somewhere in your documentation that
 | 
			
		||||
   you've used the IJG code.
 | 
			
		||||
 | 
			
		||||
In legalese:
 | 
			
		||||
 | 
			
		||||
The authors make NO WARRANTY or representation, either express or implied,
 | 
			
		||||
with respect to this software, its quality, accuracy, merchantability, or
 | 
			
		||||
fitness for a particular purpose.  This software is provided "AS IS", and you,
 | 
			
		||||
its user, assume the entire risk as to its quality and accuracy.
 | 
			
		||||
 | 
			
		||||
This software is copyright (C) 1991-2012, Thomas G. Lane, Guido Vollbeding.
 | 
			
		||||
All Rights Reserved except as specified below.
 | 
			
		||||
 | 
			
		||||
Permission is hereby granted to use, copy, modify, and distribute this
 | 
			
		||||
software (or portions thereof) for any purpose, without fee, subject to these
 | 
			
		||||
conditions:
 | 
			
		||||
(1) If any part of the source code for this software is distributed, then this
 | 
			
		||||
README file must be included, with this copyright and no-warranty notice
 | 
			
		||||
unaltered; and any additions, deletions, or changes to the original files
 | 
			
		||||
must be clearly indicated in accompanying documentation.
 | 
			
		||||
(2) If only executable code is distributed, then the accompanying
 | 
			
		||||
documentation must state that "this software is based in part on the work of
 | 
			
		||||
the Independent JPEG Group".
 | 
			
		||||
(3) Permission for use of this software is granted only if the user accepts
 | 
			
		||||
full responsibility for any undesirable consequences; the authors accept
 | 
			
		||||
NO LIABILITY for damages of any kind.
 | 
			
		||||
 | 
			
		||||
These conditions apply to any software derived from or based on the IJG code,
 | 
			
		||||
not just to the unmodified library.  If you use our work, you ought to
 | 
			
		||||
acknowledge us.
 | 
			
		||||
 | 
			
		||||
Permission is NOT granted for the use of any IJG author's name or company name
 | 
			
		||||
in advertising or publicity relating to this software or products derived from
 | 
			
		||||
it.  This software may be referred to only as "the Independent JPEG Group's
 | 
			
		||||
software".
 | 
			
		||||
 | 
			
		||||
We specifically permit and encourage the use of this software as the basis of
 | 
			
		||||
commercial products, provided that all warranty or liability claims are
 | 
			
		||||
assumed by the product vendor.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ansi2knr.c is included in this distribution by permission of L. Peter Deutsch,
 | 
			
		||||
sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA.
 | 
			
		||||
ansi2knr.c is NOT covered by the above copyright and conditions, but instead
 | 
			
		||||
by the usual distribution terms of the Free Software Foundation; principally,
 | 
			
		||||
that you must include source code if you redistribute it.  (See the file
 | 
			
		||||
ansi2knr.c for full details.)  However, since ansi2knr.c is not needed as part
 | 
			
		||||
of any program generated from the IJG code, this does not limit you more than
 | 
			
		||||
the foregoing paragraphs do.
 | 
			
		||||
 | 
			
		||||
The Unix configuration script "configure" was produced with GNU Autoconf.
 | 
			
		||||
It is copyright by the Free Software Foundation but is freely distributable.
 | 
			
		||||
The same holds for its supporting scripts (config.guess, config.sub,
 | 
			
		||||
ltmain.sh).  Another support script, install-sh, is copyright by X Consortium
 | 
			
		||||
but is also freely distributable.
 | 
			
		||||
 | 
			
		||||
The IJG distribution formerly included code to read and write GIF files.
 | 
			
		||||
To avoid entanglement with the Unisys LZW patent, GIF reading support has
 | 
			
		||||
been removed altogether, and the GIF writer has been simplified to produce
 | 
			
		||||
"uncompressed GIFs".  This technique does not use the LZW algorithm; the
 | 
			
		||||
resulting GIF files are larger than usual, but are readable by all standard
 | 
			
		||||
GIF decoders.
 | 
			
		||||
 | 
			
		||||
We are required to state that
 | 
			
		||||
    "The Graphics Interchange Format(c) is the Copyright property of
 | 
			
		||||
    CompuServe Incorporated.  GIF(sm) is a Service Mark property of
 | 
			
		||||
    CompuServe Incorporated."
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
REFERENCES
 | 
			
		||||
==========
 | 
			
		||||
 | 
			
		||||
We recommend reading one or more of these references before trying to
 | 
			
		||||
understand the innards of the JPEG software.
 | 
			
		||||
 | 
			
		||||
The best short technical introduction to the JPEG compression algorithm is
 | 
			
		||||
	Wallace, Gregory K.  "The JPEG Still Picture Compression Standard",
 | 
			
		||||
	Communications of the ACM, April 1991 (vol. 34 no. 4), pp. 30-44.
 | 
			
		||||
(Adjacent articles in that issue discuss MPEG motion picture compression,
 | 
			
		||||
applications of JPEG, and related topics.)  If you don't have the CACM issue
 | 
			
		||||
handy, a PostScript file containing a revised version of Wallace's article is
 | 
			
		||||
available at http://www.ijg.org/files/wallace.ps.gz.  The file (actually
 | 
			
		||||
a preprint for an article that appeared in IEEE Trans. Consumer Electronics)
 | 
			
		||||
omits the sample images that appeared in CACM, but it includes corrections
 | 
			
		||||
and some added material.  Note: the Wallace article is copyright ACM and IEEE,
 | 
			
		||||
and it may not be used for commercial purposes.
 | 
			
		||||
 | 
			
		||||
A somewhat less technical, more leisurely introduction to JPEG can be found in
 | 
			
		||||
"The Data Compression Book" by Mark Nelson and Jean-loup Gailly, published by
 | 
			
		||||
M&T Books (New York), 2nd ed. 1996, ISBN 1-55851-434-1.  This book provides
 | 
			
		||||
good explanations and example C code for a multitude of compression methods
 | 
			
		||||
including JPEG.  It is an excellent source if you are comfortable reading C
 | 
			
		||||
code but don't know much about data compression in general.  The book's JPEG
 | 
			
		||||
sample code is far from industrial-strength, but when you are ready to look
 | 
			
		||||
at a full implementation, you've got one here...
 | 
			
		||||
 | 
			
		||||
The best currently available description of JPEG is the textbook "JPEG Still
 | 
			
		||||
Image Data Compression Standard" by William B. Pennebaker and Joan L.
 | 
			
		||||
Mitchell, published by Van Nostrand Reinhold, 1993, ISBN 0-442-01272-1.
 | 
			
		||||
Price US$59.95, 638 pp.  The book includes the complete text of the ISO JPEG
 | 
			
		||||
standards (DIS 10918-1 and draft DIS 10918-2).
 | 
			
		||||
Although this is by far the most detailed and comprehensive exposition of
 | 
			
		||||
JPEG publicly available, we point out that it is still missing an explanation
 | 
			
		||||
of the most essential properties and algorithms of the underlying DCT
 | 
			
		||||
technology.
 | 
			
		||||
If you think that you know about DCT-based JPEG after reading this book,
 | 
			
		||||
then you are in delusion.  The real fundamentals and corresponding potential
 | 
			
		||||
of DCT-based JPEG are not publicly known so far, and that is the reason for
 | 
			
		||||
all the mistaken developments taking place in the image coding domain.
 | 
			
		||||
 | 
			
		||||
The original JPEG standard is divided into two parts, Part 1 being the actual
 | 
			
		||||
specification, while Part 2 covers compliance testing methods.  Part 1 is
 | 
			
		||||
titled "Digital Compression and Coding of Continuous-tone Still Images,
 | 
			
		||||
Part 1: Requirements and guidelines" and has document numbers ISO/IEC IS
 | 
			
		||||
10918-1, ITU-T T.81.  Part 2 is titled "Digital Compression and Coding of
 | 
			
		||||
Continuous-tone Still Images, Part 2: Compliance testing" and has document
 | 
			
		||||
numbers ISO/IEC IS 10918-2, ITU-T T.83.
 | 
			
		||||
IJG JPEG 8 introduces an implementation of the JPEG SmartScale extension
 | 
			
		||||
which is specified in two documents:  A contributed document at ITU and ISO
 | 
			
		||||
with title "ITU-T JPEG-Plus Proposal for Extending ITU-T T.81 for Advanced
 | 
			
		||||
Image Coding", April 2006, Geneva, Switzerland.  The latest version of this
 | 
			
		||||
document is Revision 3.  And a contributed document ISO/IEC JTC1/SC29/WG1 N
 | 
			
		||||
5799 with title "Evolution of JPEG", June/July 2011, Berlin, Germany.
 | 
			
		||||
 | 
			
		||||
The JPEG standard does not specify all details of an interchangeable file
 | 
			
		||||
format.  For the omitted details we follow the "JFIF" conventions, revision
 | 
			
		||||
1.02.  JFIF 1.02 has been adopted as an Ecma International Technical Report
 | 
			
		||||
and thus received a formal publication status.  It is available as a free
 | 
			
		||||
download in PDF format from
 | 
			
		||||
http://www.ecma-international.org/publications/techreports/E-TR-098.htm.
 | 
			
		||||
A PostScript version of the JFIF document is available at
 | 
			
		||||
http://www.ijg.org/files/jfif.ps.gz.  There is also a plain text version at
 | 
			
		||||
http://www.ijg.org/files/jfif.txt.gz, but it is missing the figures.
 | 
			
		||||
 | 
			
		||||
The TIFF 6.0 file format specification can be obtained by FTP from
 | 
			
		||||
ftp://ftp.sgi.com/graphics/tiff/TIFF6.ps.gz.  The JPEG incorporation scheme
 | 
			
		||||
found in the TIFF 6.0 spec of 3-June-92 has a number of serious problems.
 | 
			
		||||
IJG does not recommend use of the TIFF 6.0 design (TIFF Compression tag 6).
 | 
			
		||||
Instead, we recommend the JPEG design proposed by TIFF Technical Note #2
 | 
			
		||||
(Compression tag 7).  Copies of this Note can be obtained from
 | 
			
		||||
http://www.ijg.org/files/.  It is expected that the next revision
 | 
			
		||||
of the TIFF spec will replace the 6.0 JPEG design with the Note's design.
 | 
			
		||||
Although IJG's own code does not support TIFF/JPEG, the free libtiff library
 | 
			
		||||
uses our library to implement TIFF/JPEG per the Note.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ARCHIVE LOCATIONS
 | 
			
		||||
=================
 | 
			
		||||
 | 
			
		||||
The "official" archive site for this software is www.ijg.org.
 | 
			
		||||
The most recent released version can always be found there in
 | 
			
		||||
directory "files".  This particular version will be archived as
 | 
			
		||||
http://www.ijg.org/files/jpegsrc.v8d.tar.gz, and in Windows-compatible
 | 
			
		||||
"zip" archive format as http://www.ijg.org/files/jpegsr8d.zip.
 | 
			
		||||
 | 
			
		||||
The JPEG FAQ (Frequently Asked Questions) article is a source of some
 | 
			
		||||
general information about JPEG.
 | 
			
		||||
It is available on the World Wide Web at http://www.faqs.org/faqs/jpeg-faq/
 | 
			
		||||
and other news.answers archive sites, including the official news.answers
 | 
			
		||||
archive at rtfm.mit.edu: ftp://rtfm.mit.edu/pub/usenet/news.answers/jpeg-faq/.
 | 
			
		||||
If you don't have Web or FTP access, send e-mail to mail-server@rtfm.mit.edu
 | 
			
		||||
with body
 | 
			
		||||
	send usenet/news.answers/jpeg-faq/part1
 | 
			
		||||
	send usenet/news.answers/jpeg-faq/part2
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ACKNOWLEDGMENTS
 | 
			
		||||
===============
 | 
			
		||||
 | 
			
		||||
Thank to Juergen Bruder for providing me with a copy of the common DCT
 | 
			
		||||
algorithm article, only to find out that I had come to the same result
 | 
			
		||||
in a more direct and comprehensible way with a more generative approach.
 | 
			
		||||
 | 
			
		||||
Thank to Istvan Sebestyen and Joan L. Mitchell for inviting me to the
 | 
			
		||||
ITU JPEG (Study Group 16) meeting in Geneva, Switzerland.
 | 
			
		||||
 | 
			
		||||
Thank to Thomas Wiegand and Gary Sullivan for inviting me to the
 | 
			
		||||
Joint Video Team (MPEG & ITU) meeting in Geneva, Switzerland.
 | 
			
		||||
 | 
			
		||||
Thank to Thomas Richter and Daniel Lee for inviting me to the
 | 
			
		||||
ISO/IEC JTC1/SC29/WG1 (also known as JPEG, together with ITU-T SG16)
 | 
			
		||||
meeting in Berlin, Germany.
 | 
			
		||||
 | 
			
		||||
Thank to John Korejwa and Massimo Ballerini for inviting me to
 | 
			
		||||
fruitful consultations in Boston, MA and Milan, Italy.
 | 
			
		||||
 | 
			
		||||
Thank to Hendrik Elstner, Roland Fassauer, Simone Zuck, Guenther
 | 
			
		||||
Maier-Gerber, Walter Stoeber, Fred Schmitz, and Norbert Braunagel
 | 
			
		||||
for corresponding business development.
 | 
			
		||||
 | 
			
		||||
Thank to Nico Zschach and Dirk Stelling of the technical support team
 | 
			
		||||
at the Digital Images company in Halle for providing me with extra
 | 
			
		||||
equipment for configuration tests.
 | 
			
		||||
 | 
			
		||||
Thank to Richard F. Lyon (then of Foveon Inc.) for fruitful
 | 
			
		||||
communication about JPEG configuration in Sigma Photo Pro software.
 | 
			
		||||
 | 
			
		||||
Thank to Andrew Finkenstadt for hosting the ijg.org site.
 | 
			
		||||
 | 
			
		||||
Last but not least special thank to Thomas G. Lane for the original
 | 
			
		||||
design and development of this singular software package.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FILE FORMAT WARS
 | 
			
		||||
================
 | 
			
		||||
 | 
			
		||||
The ISO/IEC JTC1/SC29/WG1 standards committee (also known as JPEG, together
 | 
			
		||||
with ITU-T SG16) currently promotes different formats containing the name
 | 
			
		||||
"JPEG" which is misleading because these formats are incompatible with
 | 
			
		||||
original DCT-based JPEG and are based on faulty technologies.
 | 
			
		||||
IJG therefore does not and will not support such momentary mistakes
 | 
			
		||||
(see REFERENCES).
 | 
			
		||||
There exist also distributions under the name "OpenJPEG" promoting such
 | 
			
		||||
kind of formats which is misleading because they don't support original
 | 
			
		||||
JPEG images.
 | 
			
		||||
We have no sympathy for the promotion of inferior formats.  Indeed, one of
 | 
			
		||||
the original reasons for developing this free software was to help force
 | 
			
		||||
convergence on common, interoperable format standards for JPEG files.
 | 
			
		||||
Don't use an incompatible file format!
 | 
			
		||||
(In any case, our decoder will remain capable of reading existing JPEG
 | 
			
		||||
image files indefinitely.)
 | 
			
		||||
 | 
			
		||||
Furthermore, the ISO committee pretends to be "responsible for the popular
 | 
			
		||||
JPEG" in their public reports which is not true because they don't respond to
 | 
			
		||||
actual requirements for the maintenance of the original JPEG specification.
 | 
			
		||||
 | 
			
		||||
There are currently distributions in circulation containing the name
 | 
			
		||||
"libjpeg" which claim to be a "derivative" or "fork" of the original
 | 
			
		||||
libjpeg, but don't have the features and are incompatible with formats
 | 
			
		||||
supported by actual IJG libjpeg distributions.  Furthermore, they
 | 
			
		||||
violate the license conditions as described under LEGAL ISSUES above.
 | 
			
		||||
We have no sympathy for the release of misleading and illegal
 | 
			
		||||
distributions derived from obsolete code bases.
 | 
			
		||||
Don't use an obsolete code base!
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
TO DO
 | 
			
		||||
=====
 | 
			
		||||
 | 
			
		||||
Version 8 is the first release of a new generation JPEG standard
 | 
			
		||||
to overcome the limitations of the original JPEG specification.
 | 
			
		||||
More features are being prepared for coming releases...
 | 
			
		||||
 | 
			
		||||
Please send bug reports, offers of help, etc. to jpeg-info@jpegclub.org.
 | 
			
		||||
							
								
								
									
										134
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/include/cderror.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										134
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/include/cderror.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,134 @@
 | 
			
		||||
/*
 | 
			
		||||
 * cderror.h
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 1994-1997, Thomas G. Lane.
 | 
			
		||||
 * Modified 2009 by Guido Vollbeding.
 | 
			
		||||
 * This file is part of the Independent JPEG Group's software.
 | 
			
		||||
 * For conditions of distribution and use, see the accompanying README file.
 | 
			
		||||
 *
 | 
			
		||||
 * This file defines the error and message codes for the cjpeg/djpeg
 | 
			
		||||
 * applications.  These strings are not needed as part of the JPEG library
 | 
			
		||||
 * proper.
 | 
			
		||||
 * Edit this file to add new codes, or to translate the message strings to
 | 
			
		||||
 * some other language.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * To define the enum list of message codes, include this file without
 | 
			
		||||
 * defining macro JMESSAGE.  To create a message string table, include it
 | 
			
		||||
 * again with a suitable JMESSAGE definition (see jerror.c for an example).
 | 
			
		||||
 */
 | 
			
		||||
#ifndef JMESSAGE
 | 
			
		||||
#ifndef CDERROR_H
 | 
			
		||||
#define CDERROR_H
 | 
			
		||||
/* First time through, define the enum list */
 | 
			
		||||
#define JMAKE_ENUM_LIST
 | 
			
		||||
#else
 | 
			
		||||
/* Repeated inclusions of this file are no-ops unless JMESSAGE is defined */
 | 
			
		||||
#define JMESSAGE(code,string)
 | 
			
		||||
#endif /* CDERROR_H */
 | 
			
		||||
#endif /* JMESSAGE */
 | 
			
		||||
 | 
			
		||||
#ifdef JMAKE_ENUM_LIST
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
 | 
			
		||||
#define JMESSAGE(code,string)	code ,
 | 
			
		||||
 | 
			
		||||
#endif /* JMAKE_ENUM_LIST */
 | 
			
		||||
 | 
			
		||||
JMESSAGE(JMSG_FIRSTADDONCODE=1000, NULL) /* Must be first entry! */
 | 
			
		||||
 | 
			
		||||
#ifdef BMP_SUPPORTED
 | 
			
		||||
JMESSAGE(JERR_BMP_BADCMAP, "Unsupported BMP colormap format")
 | 
			
		||||
JMESSAGE(JERR_BMP_BADDEPTH, "Only 8- and 24-bit BMP files are supported")
 | 
			
		||||
JMESSAGE(JERR_BMP_BADHEADER, "Invalid BMP file: bad header length")
 | 
			
		||||
JMESSAGE(JERR_BMP_BADPLANES, "Invalid BMP file: biPlanes not equal to 1")
 | 
			
		||||
JMESSAGE(JERR_BMP_COLORSPACE, "BMP output must be grayscale or RGB")
 | 
			
		||||
JMESSAGE(JERR_BMP_COMPRESSED, "Sorry, compressed BMPs not yet supported")
 | 
			
		||||
JMESSAGE(JERR_BMP_EMPTY, "Empty BMP image")
 | 
			
		||||
JMESSAGE(JERR_BMP_NOT, "Not a BMP file - does not start with BM")
 | 
			
		||||
JMESSAGE(JTRC_BMP, "%ux%u 24-bit BMP image")
 | 
			
		||||
JMESSAGE(JTRC_BMP_MAPPED, "%ux%u 8-bit colormapped BMP image")
 | 
			
		||||
JMESSAGE(JTRC_BMP_OS2, "%ux%u 24-bit OS2 BMP image")
 | 
			
		||||
JMESSAGE(JTRC_BMP_OS2_MAPPED, "%ux%u 8-bit colormapped OS2 BMP image")
 | 
			
		||||
#endif /* BMP_SUPPORTED */
 | 
			
		||||
 | 
			
		||||
#ifdef GIF_SUPPORTED
 | 
			
		||||
JMESSAGE(JERR_GIF_BUG, "GIF output got confused")
 | 
			
		||||
JMESSAGE(JERR_GIF_CODESIZE, "Bogus GIF codesize %d")
 | 
			
		||||
JMESSAGE(JERR_GIF_COLORSPACE, "GIF output must be grayscale or RGB")
 | 
			
		||||
JMESSAGE(JERR_GIF_IMAGENOTFOUND, "Too few images in GIF file")
 | 
			
		||||
JMESSAGE(JERR_GIF_NOT, "Not a GIF file")
 | 
			
		||||
JMESSAGE(JTRC_GIF, "%ux%ux%d GIF image")
 | 
			
		||||
JMESSAGE(JTRC_GIF_BADVERSION,
 | 
			
		||||
	 "Warning: unexpected GIF version number '%c%c%c'")
 | 
			
		||||
JMESSAGE(JTRC_GIF_EXTENSION, "Ignoring GIF extension block of type 0x%02x")
 | 
			
		||||
JMESSAGE(JTRC_GIF_NONSQUARE, "Caution: nonsquare pixels in input")
 | 
			
		||||
JMESSAGE(JWRN_GIF_BADDATA, "Corrupt data in GIF file")
 | 
			
		||||
JMESSAGE(JWRN_GIF_CHAR, "Bogus char 0x%02x in GIF file, ignoring")
 | 
			
		||||
JMESSAGE(JWRN_GIF_ENDCODE, "Premature end of GIF image")
 | 
			
		||||
JMESSAGE(JWRN_GIF_NOMOREDATA, "Ran out of GIF bits")
 | 
			
		||||
#endif /* GIF_SUPPORTED */
 | 
			
		||||
 | 
			
		||||
#ifdef PPM_SUPPORTED
 | 
			
		||||
JMESSAGE(JERR_PPM_COLORSPACE, "PPM output must be grayscale or RGB")
 | 
			
		||||
JMESSAGE(JERR_PPM_NONNUMERIC, "Nonnumeric data in PPM file")
 | 
			
		||||
JMESSAGE(JERR_PPM_NOT, "Not a PPM/PGM file")
 | 
			
		||||
JMESSAGE(JTRC_PGM, "%ux%u PGM image")
 | 
			
		||||
JMESSAGE(JTRC_PGM_TEXT, "%ux%u text PGM image")
 | 
			
		||||
JMESSAGE(JTRC_PPM, "%ux%u PPM image")
 | 
			
		||||
JMESSAGE(JTRC_PPM_TEXT, "%ux%u text PPM image")
 | 
			
		||||
#endif /* PPM_SUPPORTED */
 | 
			
		||||
 | 
			
		||||
#ifdef RLE_SUPPORTED
 | 
			
		||||
JMESSAGE(JERR_RLE_BADERROR, "Bogus error code from RLE library")
 | 
			
		||||
JMESSAGE(JERR_RLE_COLORSPACE, "RLE output must be grayscale or RGB")
 | 
			
		||||
JMESSAGE(JERR_RLE_DIMENSIONS, "Image dimensions (%ux%u) too large for RLE")
 | 
			
		||||
JMESSAGE(JERR_RLE_EMPTY, "Empty RLE file")
 | 
			
		||||
JMESSAGE(JERR_RLE_EOF, "Premature EOF in RLE header")
 | 
			
		||||
JMESSAGE(JERR_RLE_MEM, "Insufficient memory for RLE header")
 | 
			
		||||
JMESSAGE(JERR_RLE_NOT, "Not an RLE file")
 | 
			
		||||
JMESSAGE(JERR_RLE_TOOMANYCHANNELS, "Cannot handle %d output channels for RLE")
 | 
			
		||||
JMESSAGE(JERR_RLE_UNSUPPORTED, "Cannot handle this RLE setup")
 | 
			
		||||
JMESSAGE(JTRC_RLE, "%ux%u full-color RLE file")
 | 
			
		||||
JMESSAGE(JTRC_RLE_FULLMAP, "%ux%u full-color RLE file with map of length %d")
 | 
			
		||||
JMESSAGE(JTRC_RLE_GRAY, "%ux%u grayscale RLE file")
 | 
			
		||||
JMESSAGE(JTRC_RLE_MAPGRAY, "%ux%u grayscale RLE file with map of length %d")
 | 
			
		||||
JMESSAGE(JTRC_RLE_MAPPED, "%ux%u colormapped RLE file with map of length %d")
 | 
			
		||||
#endif /* RLE_SUPPORTED */
 | 
			
		||||
 | 
			
		||||
#ifdef TARGA_SUPPORTED
 | 
			
		||||
JMESSAGE(JERR_TGA_BADCMAP, "Unsupported Targa colormap format")
 | 
			
		||||
JMESSAGE(JERR_TGA_BADPARMS, "Invalid or unsupported Targa file")
 | 
			
		||||
JMESSAGE(JERR_TGA_COLORSPACE, "Targa output must be grayscale or RGB")
 | 
			
		||||
JMESSAGE(JTRC_TGA, "%ux%u RGB Targa image")
 | 
			
		||||
JMESSAGE(JTRC_TGA_GRAY, "%ux%u grayscale Targa image")
 | 
			
		||||
JMESSAGE(JTRC_TGA_MAPPED, "%ux%u colormapped Targa image")
 | 
			
		||||
#else
 | 
			
		||||
JMESSAGE(JERR_TGA_NOTCOMP, "Targa support was not compiled")
 | 
			
		||||
#endif /* TARGA_SUPPORTED */
 | 
			
		||||
 | 
			
		||||
JMESSAGE(JERR_BAD_CMAP_FILE,
 | 
			
		||||
	 "Color map file is invalid or of unsupported format")
 | 
			
		||||
JMESSAGE(JERR_TOO_MANY_COLORS,
 | 
			
		||||
	 "Output file format cannot handle %d colormap entries")
 | 
			
		||||
JMESSAGE(JERR_UNGETC_FAILED, "ungetc failed")
 | 
			
		||||
#ifdef TARGA_SUPPORTED
 | 
			
		||||
JMESSAGE(JERR_UNKNOWN_FORMAT,
 | 
			
		||||
	 "Unrecognized input file format --- perhaps you need -targa")
 | 
			
		||||
#else
 | 
			
		||||
JMESSAGE(JERR_UNKNOWN_FORMAT, "Unrecognized input file format")
 | 
			
		||||
#endif
 | 
			
		||||
JMESSAGE(JERR_UNSUPPORTED_FORMAT, "Unsupported output file format")
 | 
			
		||||
 | 
			
		||||
#ifdef JMAKE_ENUM_LIST
 | 
			
		||||
 | 
			
		||||
  JMSG_LASTADDONCODE
 | 
			
		||||
} ADDON_MESSAGE_CODE;
 | 
			
		||||
 | 
			
		||||
#undef JMAKE_ENUM_LIST
 | 
			
		||||
#endif /* JMAKE_ENUM_LIST */
 | 
			
		||||
 | 
			
		||||
/* Zap JMESSAGE macro so that future re-inclusions do nothing by default */
 | 
			
		||||
#undef JMESSAGE
 | 
			
		||||
							
								
								
									
										187
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/include/cdjpeg.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										187
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/include/cdjpeg.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,187 @@
 | 
			
		||||
/*
 | 
			
		||||
 * cdjpeg.h
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 1994-1997, Thomas G. Lane.
 | 
			
		||||
 * This file is part of the Independent JPEG Group's software.
 | 
			
		||||
 * For conditions of distribution and use, see the accompanying README file.
 | 
			
		||||
 *
 | 
			
		||||
 * This file contains common declarations for the sample applications
 | 
			
		||||
 * cjpeg and djpeg.  It is NOT used by the core JPEG library.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#define JPEG_CJPEG_DJPEG	/* define proper options in jconfig.h */
 | 
			
		||||
#define JPEG_INTERNAL_OPTIONS	/* cjpeg.c,djpeg.c need to see xxx_SUPPORTED */
 | 
			
		||||
#include "jinclude.h"
 | 
			
		||||
#include "jpeglib.h"
 | 
			
		||||
#include "jerror.h"		/* get library error codes too */
 | 
			
		||||
#include "cderror.h"		/* get application-specific error codes */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Object interface for cjpeg's source file decoding modules
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
typedef struct cjpeg_source_struct * cjpeg_source_ptr;
 | 
			
		||||
 | 
			
		||||
struct cjpeg_source_struct {
 | 
			
		||||
  JMETHOD(void, start_input, (j_compress_ptr cinfo,
 | 
			
		||||
			      cjpeg_source_ptr sinfo));
 | 
			
		||||
  JMETHOD(JDIMENSION, get_pixel_rows, (j_compress_ptr cinfo,
 | 
			
		||||
				       cjpeg_source_ptr sinfo));
 | 
			
		||||
  JMETHOD(void, finish_input, (j_compress_ptr cinfo,
 | 
			
		||||
			       cjpeg_source_ptr sinfo));
 | 
			
		||||
 | 
			
		||||
  FILE *input_file;
 | 
			
		||||
 | 
			
		||||
  JSAMPARRAY buffer;
 | 
			
		||||
  JDIMENSION buffer_height;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Object interface for djpeg's output file encoding modules
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
typedef struct djpeg_dest_struct * djpeg_dest_ptr;
 | 
			
		||||
 | 
			
		||||
struct djpeg_dest_struct {
 | 
			
		||||
  /* start_output is called after jpeg_start_decompress finishes.
 | 
			
		||||
   * The color map will be ready at this time, if one is needed.
 | 
			
		||||
   */
 | 
			
		||||
  JMETHOD(void, start_output, (j_decompress_ptr cinfo,
 | 
			
		||||
			       djpeg_dest_ptr dinfo));
 | 
			
		||||
  /* Emit the specified number of pixel rows from the buffer. */
 | 
			
		||||
  JMETHOD(void, put_pixel_rows, (j_decompress_ptr cinfo,
 | 
			
		||||
				 djpeg_dest_ptr dinfo,
 | 
			
		||||
				 JDIMENSION rows_supplied));
 | 
			
		||||
  /* Finish up at the end of the image. */
 | 
			
		||||
  JMETHOD(void, finish_output, (j_decompress_ptr cinfo,
 | 
			
		||||
				djpeg_dest_ptr dinfo));
 | 
			
		||||
 | 
			
		||||
  /* Target file spec; filled in by djpeg.c after object is created. */
 | 
			
		||||
  FILE * output_file;
 | 
			
		||||
 | 
			
		||||
  /* Output pixel-row buffer.  Created by module init or start_output.
 | 
			
		||||
   * Width is cinfo->output_width * cinfo->output_components;
 | 
			
		||||
   * height is buffer_height.
 | 
			
		||||
   */
 | 
			
		||||
  JSAMPARRAY buffer;
 | 
			
		||||
  JDIMENSION buffer_height;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cjpeg/djpeg may need to perform extra passes to convert to or from
 | 
			
		||||
 * the source/destination file format.  The JPEG library does not know
 | 
			
		||||
 * about these passes, but we'd like them to be counted by the progress
 | 
			
		||||
 * monitor.  We use an expanded progress monitor object to hold the
 | 
			
		||||
 * additional pass count.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
struct cdjpeg_progress_mgr {
 | 
			
		||||
  struct jpeg_progress_mgr pub;	/* fields known to JPEG library */
 | 
			
		||||
  int completed_extra_passes;	/* extra passes completed */
 | 
			
		||||
  int total_extra_passes;	/* total extra */
 | 
			
		||||
  /* last printed percentage stored here to avoid multiple printouts */
 | 
			
		||||
  int percent_done;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef struct cdjpeg_progress_mgr * cd_progress_ptr;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Short forms of external names for systems with brain-damaged linkers. */
 | 
			
		||||
 | 
			
		||||
#ifdef NEED_SHORT_EXTERNAL_NAMES
 | 
			
		||||
#define jinit_read_bmp		jIRdBMP
 | 
			
		||||
#define jinit_write_bmp		jIWrBMP
 | 
			
		||||
#define jinit_read_gif		jIRdGIF
 | 
			
		||||
#define jinit_write_gif		jIWrGIF
 | 
			
		||||
#define jinit_read_ppm		jIRdPPM
 | 
			
		||||
#define jinit_write_ppm		jIWrPPM
 | 
			
		||||
#define jinit_read_rle		jIRdRLE
 | 
			
		||||
#define jinit_write_rle		jIWrRLE
 | 
			
		||||
#define jinit_read_targa	jIRdTarga
 | 
			
		||||
#define jinit_write_targa	jIWrTarga
 | 
			
		||||
#define read_quant_tables	RdQTables
 | 
			
		||||
#define read_scan_script	RdScnScript
 | 
			
		||||
#define set_quality_ratings     SetQRates
 | 
			
		||||
#define set_quant_slots		SetQSlots
 | 
			
		||||
#define set_sample_factors	SetSFacts
 | 
			
		||||
#define read_color_map		RdCMap
 | 
			
		||||
#define enable_signal_catcher	EnSigCatcher
 | 
			
		||||
#define start_progress_monitor	StProgMon
 | 
			
		||||
#define end_progress_monitor	EnProgMon
 | 
			
		||||
#define read_stdin		RdStdin
 | 
			
		||||
#define write_stdout		WrStdout
 | 
			
		||||
#endif /* NEED_SHORT_EXTERNAL_NAMES */
 | 
			
		||||
 | 
			
		||||
/* Module selection routines for I/O modules. */
 | 
			
		||||
 | 
			
		||||
EXTERN(cjpeg_source_ptr) jinit_read_bmp JPP((j_compress_ptr cinfo));
 | 
			
		||||
EXTERN(djpeg_dest_ptr) jinit_write_bmp JPP((j_decompress_ptr cinfo,
 | 
			
		||||
					    boolean is_os2));
 | 
			
		||||
EXTERN(cjpeg_source_ptr) jinit_read_gif JPP((j_compress_ptr cinfo));
 | 
			
		||||
EXTERN(djpeg_dest_ptr) jinit_write_gif JPP((j_decompress_ptr cinfo));
 | 
			
		||||
EXTERN(cjpeg_source_ptr) jinit_read_ppm JPP((j_compress_ptr cinfo));
 | 
			
		||||
EXTERN(djpeg_dest_ptr) jinit_write_ppm JPP((j_decompress_ptr cinfo));
 | 
			
		||||
EXTERN(cjpeg_source_ptr) jinit_read_rle JPP((j_compress_ptr cinfo));
 | 
			
		||||
EXTERN(djpeg_dest_ptr) jinit_write_rle JPP((j_decompress_ptr cinfo));
 | 
			
		||||
EXTERN(cjpeg_source_ptr) jinit_read_targa JPP((j_compress_ptr cinfo));
 | 
			
		||||
EXTERN(djpeg_dest_ptr) jinit_write_targa JPP((j_decompress_ptr cinfo));
 | 
			
		||||
 | 
			
		||||
/* cjpeg support routines (in rdswitch.c) */
 | 
			
		||||
 | 
			
		||||
EXTERN(boolean) read_quant_tables JPP((j_compress_ptr cinfo, char * filename,
 | 
			
		||||
				       boolean force_baseline));
 | 
			
		||||
EXTERN(boolean) read_scan_script JPP((j_compress_ptr cinfo, char * filename));
 | 
			
		||||
EXTERN(boolean) set_quality_ratings JPP((j_compress_ptr cinfo, char *arg,
 | 
			
		||||
					 boolean force_baseline));
 | 
			
		||||
EXTERN(boolean) set_quant_slots JPP((j_compress_ptr cinfo, char *arg));
 | 
			
		||||
EXTERN(boolean) set_sample_factors JPP((j_compress_ptr cinfo, char *arg));
 | 
			
		||||
 | 
			
		||||
/* djpeg support routines (in rdcolmap.c) */
 | 
			
		||||
 | 
			
		||||
EXTERN(void) read_color_map JPP((j_decompress_ptr cinfo, FILE * infile));
 | 
			
		||||
 | 
			
		||||
/* common support routines (in cdjpeg.c) */
 | 
			
		||||
 | 
			
		||||
EXTERN(void) enable_signal_catcher JPP((j_common_ptr cinfo));
 | 
			
		||||
EXTERN(void) start_progress_monitor JPP((j_common_ptr cinfo,
 | 
			
		||||
					 cd_progress_ptr progress));
 | 
			
		||||
EXTERN(void) end_progress_monitor JPP((j_common_ptr cinfo));
 | 
			
		||||
EXTERN(boolean) keymatch JPP((char * arg, const char * keyword, int minchars));
 | 
			
		||||
EXTERN(FILE *) read_stdin JPP((void));
 | 
			
		||||
EXTERN(FILE *) write_stdout JPP((void));
 | 
			
		||||
 | 
			
		||||
/* miscellaneous useful macros */
 | 
			
		||||
 | 
			
		||||
#ifdef DONT_USE_B_MODE		/* define mode parameters for fopen() */
 | 
			
		||||
#define READ_BINARY	"r"
 | 
			
		||||
#define WRITE_BINARY	"w"
 | 
			
		||||
#else
 | 
			
		||||
#ifdef VMS			/* VMS is very nonstandard */
 | 
			
		||||
#define READ_BINARY	"rb", "ctx=stm"
 | 
			
		||||
#define WRITE_BINARY	"wb", "ctx=stm"
 | 
			
		||||
#else				/* standard ANSI-compliant case */
 | 
			
		||||
#define READ_BINARY	"rb"
 | 
			
		||||
#define WRITE_BINARY	"wb"
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EXIT_FAILURE		/* define exit() codes if not provided */
 | 
			
		||||
#define EXIT_FAILURE  1
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef EXIT_SUCCESS
 | 
			
		||||
#ifdef VMS
 | 
			
		||||
#define EXIT_SUCCESS  1		/* VMS is very nonstandard */
 | 
			
		||||
#else
 | 
			
		||||
#define EXIT_SUCCESS  0
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef EXIT_WARNING
 | 
			
		||||
#ifdef VMS
 | 
			
		||||
#define EXIT_WARNING  1		/* VMS is very nonstandard */
 | 
			
		||||
#else
 | 
			
		||||
#define EXIT_WARNING  2
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										54
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/include/jconfig.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/include/jconfig.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,54 @@
 | 
			
		||||
/* jconfig.h.  Generated from jconfig.cfg by configure.  */
 | 
			
		||||
/* jconfig.cfg --- source file edited by configure script */
 | 
			
		||||
/* see jconfig.txt for explanations */
 | 
			
		||||
 | 
			
		||||
#define HAVE_PROTOTYPES 1
 | 
			
		||||
#define HAVE_UNSIGNED_CHAR 1
 | 
			
		||||
#define HAVE_UNSIGNED_SHORT 1
 | 
			
		||||
/* #undef void */
 | 
			
		||||
/* #undef const */
 | 
			
		||||
/* #undef CHAR_IS_UNSIGNED */
 | 
			
		||||
#define HAVE_STDDEF_H 1
 | 
			
		||||
#define HAVE_STDLIB_H 1
 | 
			
		||||
#define HAVE_LOCALE_H 1
 | 
			
		||||
/* #undef NEED_BSD_STRINGS */
 | 
			
		||||
/* #undef NEED_SYS_TYPES_H */
 | 
			
		||||
/* #undef NEED_FAR_POINTERS */
 | 
			
		||||
/* #undef NEED_SHORT_EXTERNAL_NAMES */
 | 
			
		||||
/* Define this if you get warnings about undefined structures. */
 | 
			
		||||
/* #undef INCOMPLETE_TYPES_BROKEN */
 | 
			
		||||
 | 
			
		||||
/* Define "boolean" as unsigned char, not int, on Windows systems. */
 | 
			
		||||
#ifdef _WIN32
 | 
			
		||||
#ifndef __RPCNDR_H__		/* don't conflict if rpcndr.h already read */
 | 
			
		||||
typedef unsigned char boolean;
 | 
			
		||||
#endif
 | 
			
		||||
#define HAVE_BOOLEAN		/* prevent jmorecfg.h from redefining it */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef JPEG_INTERNALS
 | 
			
		||||
 | 
			
		||||
/* #undef RIGHT_SHIFT_IS_UNSIGNED */
 | 
			
		||||
#define INLINE __inline__
 | 
			
		||||
/* These are for configuring the JPEG memory manager. */
 | 
			
		||||
/* #undef DEFAULT_MAX_MEM */
 | 
			
		||||
/* #undef NO_MKTEMP */
 | 
			
		||||
 | 
			
		||||
#endif /* JPEG_INTERNALS */
 | 
			
		||||
 | 
			
		||||
#ifdef JPEG_CJPEG_DJPEG
 | 
			
		||||
 | 
			
		||||
#define BMP_SUPPORTED		/* BMP image file format */
 | 
			
		||||
#define GIF_SUPPORTED		/* GIF image file format */
 | 
			
		||||
#define PPM_SUPPORTED		/* PBMPLUS PPM/PGM image file format */
 | 
			
		||||
/* #undef RLE_SUPPORTED */
 | 
			
		||||
#define TARGA_SUPPORTED		/* Targa image file format */
 | 
			
		||||
 | 
			
		||||
/* #undef TWO_FILE_COMMANDLINE */
 | 
			
		||||
/* #undef NEED_SIGNAL_CATCHER */
 | 
			
		||||
/* #undef DONT_USE_B_MODE */
 | 
			
		||||
 | 
			
		||||
/* Define this if you want percent-done progress reports from cjpeg/djpeg. */
 | 
			
		||||
/* #undef PROGRESS_REPORT */
 | 
			
		||||
 | 
			
		||||
#endif /* JPEG_CJPEG_DJPEG */
 | 
			
		||||
							
								
								
									
										393
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/include/jdct.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										393
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/include/jdct.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,393 @@
 | 
			
		||||
/*
 | 
			
		||||
 * jdct.h
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 1994-1996, Thomas G. Lane.
 | 
			
		||||
 * This file is part of the Independent JPEG Group's software.
 | 
			
		||||
 * For conditions of distribution and use, see the accompanying README file.
 | 
			
		||||
 *
 | 
			
		||||
 * This include file contains common declarations for the forward and
 | 
			
		||||
 * inverse DCT modules.  These declarations are private to the DCT managers
 | 
			
		||||
 * (jcdctmgr.c, jddctmgr.c) and the individual DCT algorithms.
 | 
			
		||||
 * The individual DCT algorithms are kept in separate files to ease 
 | 
			
		||||
 * machine-dependent tuning (e.g., assembly coding).
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * A forward DCT routine is given a pointer to an input sample array and
 | 
			
		||||
 * a pointer to a work area of type DCTELEM[]; the DCT is to be performed
 | 
			
		||||
 * in-place in that buffer.  Type DCTELEM is int for 8-bit samples, INT32
 | 
			
		||||
 * for 12-bit samples.  (NOTE: Floating-point DCT implementations use an
 | 
			
		||||
 * array of type FAST_FLOAT, instead.)
 | 
			
		||||
 * The input data is to be fetched from the sample array starting at a
 | 
			
		||||
 * specified column.  (Any row offset needed will be applied to the array
 | 
			
		||||
 * pointer before it is passed to the FDCT code.)
 | 
			
		||||
 * Note that the number of samples fetched by the FDCT routine is
 | 
			
		||||
 * DCT_h_scaled_size * DCT_v_scaled_size.
 | 
			
		||||
 * The DCT outputs are returned scaled up by a factor of 8; they therefore
 | 
			
		||||
 * have a range of +-8K for 8-bit data, +-128K for 12-bit data.  This
 | 
			
		||||
 * convention improves accuracy in integer implementations and saves some
 | 
			
		||||
 * work in floating-point ones.
 | 
			
		||||
 * Quantization of the output coefficients is done by jcdctmgr.c.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#if BITS_IN_JSAMPLE == 8
 | 
			
		||||
typedef int DCTELEM;		/* 16 or 32 bits is fine */
 | 
			
		||||
#else
 | 
			
		||||
typedef INT32 DCTELEM;		/* must have 32 bits */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
typedef JMETHOD(void, forward_DCT_method_ptr, (DCTELEM * data,
 | 
			
		||||
					       JSAMPARRAY sample_data,
 | 
			
		||||
					       JDIMENSION start_col));
 | 
			
		||||
typedef JMETHOD(void, float_DCT_method_ptr, (FAST_FLOAT * data,
 | 
			
		||||
					     JSAMPARRAY sample_data,
 | 
			
		||||
					     JDIMENSION start_col));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * An inverse DCT routine is given a pointer to the input JBLOCK and a pointer
 | 
			
		||||
 * to an output sample array.  The routine must dequantize the input data as
 | 
			
		||||
 * well as perform the IDCT; for dequantization, it uses the multiplier table
 | 
			
		||||
 * pointed to by compptr->dct_table.  The output data is to be placed into the
 | 
			
		||||
 * sample array starting at a specified column.  (Any row offset needed will
 | 
			
		||||
 * be applied to the array pointer before it is passed to the IDCT code.)
 | 
			
		||||
 * Note that the number of samples emitted by the IDCT routine is
 | 
			
		||||
 * DCT_h_scaled_size * DCT_v_scaled_size.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* typedef inverse_DCT_method_ptr is declared in jpegint.h */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Each IDCT routine has its own ideas about the best dct_table element type.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
typedef MULTIPLIER ISLOW_MULT_TYPE; /* short or int, whichever is faster */
 | 
			
		||||
#if BITS_IN_JSAMPLE == 8
 | 
			
		||||
typedef MULTIPLIER IFAST_MULT_TYPE; /* 16 bits is OK, use short if faster */
 | 
			
		||||
#define IFAST_SCALE_BITS  2	/* fractional bits in scale factors */
 | 
			
		||||
#else
 | 
			
		||||
typedef INT32 IFAST_MULT_TYPE;	/* need 32 bits for scaled quantizers */
 | 
			
		||||
#define IFAST_SCALE_BITS  13	/* fractional bits in scale factors */
 | 
			
		||||
#endif
 | 
			
		||||
typedef FAST_FLOAT FLOAT_MULT_TYPE; /* preferred floating type */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Each IDCT routine is responsible for range-limiting its results and
 | 
			
		||||
 * converting them to unsigned form (0..MAXJSAMPLE).  The raw outputs could
 | 
			
		||||
 * be quite far out of range if the input data is corrupt, so a bulletproof
 | 
			
		||||
 * range-limiting step is required.  We use a mask-and-table-lookup method
 | 
			
		||||
 * to do the combined operations quickly.  See the comments with
 | 
			
		||||
 * prepare_range_limit_table (in jdmaster.c) for more info.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#define IDCT_range_limit(cinfo)  ((cinfo)->sample_range_limit + CENTERJSAMPLE)
 | 
			
		||||
 | 
			
		||||
#define RANGE_MASK  (MAXJSAMPLE * 4 + 3) /* 2 bits wider than legal samples */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Short forms of external names for systems with brain-damaged linkers. */
 | 
			
		||||
 | 
			
		||||
#ifdef NEED_SHORT_EXTERNAL_NAMES
 | 
			
		||||
#define jpeg_fdct_islow		jFDislow
 | 
			
		||||
#define jpeg_fdct_ifast		jFDifast
 | 
			
		||||
#define jpeg_fdct_float		jFDfloat
 | 
			
		||||
#define jpeg_fdct_7x7		jFD7x7
 | 
			
		||||
#define jpeg_fdct_6x6		jFD6x6
 | 
			
		||||
#define jpeg_fdct_5x5		jFD5x5
 | 
			
		||||
#define jpeg_fdct_4x4		jFD4x4
 | 
			
		||||
#define jpeg_fdct_3x3		jFD3x3
 | 
			
		||||
#define jpeg_fdct_2x2		jFD2x2
 | 
			
		||||
#define jpeg_fdct_1x1		jFD1x1
 | 
			
		||||
#define jpeg_fdct_9x9		jFD9x9
 | 
			
		||||
#define jpeg_fdct_10x10		jFD10x10
 | 
			
		||||
#define jpeg_fdct_11x11		jFD11x11
 | 
			
		||||
#define jpeg_fdct_12x12		jFD12x12
 | 
			
		||||
#define jpeg_fdct_13x13		jFD13x13
 | 
			
		||||
#define jpeg_fdct_14x14		jFD14x14
 | 
			
		||||
#define jpeg_fdct_15x15		jFD15x15
 | 
			
		||||
#define jpeg_fdct_16x16		jFD16x16
 | 
			
		||||
#define jpeg_fdct_16x8		jFD16x8
 | 
			
		||||
#define jpeg_fdct_14x7		jFD14x7
 | 
			
		||||
#define jpeg_fdct_12x6		jFD12x6
 | 
			
		||||
#define jpeg_fdct_10x5		jFD10x5
 | 
			
		||||
#define jpeg_fdct_8x4		jFD8x4
 | 
			
		||||
#define jpeg_fdct_6x3		jFD6x3
 | 
			
		||||
#define jpeg_fdct_4x2		jFD4x2
 | 
			
		||||
#define jpeg_fdct_2x1		jFD2x1
 | 
			
		||||
#define jpeg_fdct_8x16		jFD8x16
 | 
			
		||||
#define jpeg_fdct_7x14		jFD7x14
 | 
			
		||||
#define jpeg_fdct_6x12		jFD6x12
 | 
			
		||||
#define jpeg_fdct_5x10		jFD5x10
 | 
			
		||||
#define jpeg_fdct_4x8		jFD4x8
 | 
			
		||||
#define jpeg_fdct_3x6		jFD3x6
 | 
			
		||||
#define jpeg_fdct_2x4		jFD2x4
 | 
			
		||||
#define jpeg_fdct_1x2		jFD1x2
 | 
			
		||||
#define jpeg_idct_islow		jRDislow
 | 
			
		||||
#define jpeg_idct_ifast		jRDifast
 | 
			
		||||
#define jpeg_idct_float		jRDfloat
 | 
			
		||||
#define jpeg_idct_7x7		jRD7x7
 | 
			
		||||
#define jpeg_idct_6x6		jRD6x6
 | 
			
		||||
#define jpeg_idct_5x5		jRD5x5
 | 
			
		||||
#define jpeg_idct_4x4		jRD4x4
 | 
			
		||||
#define jpeg_idct_3x3		jRD3x3
 | 
			
		||||
#define jpeg_idct_2x2		jRD2x2
 | 
			
		||||
#define jpeg_idct_1x1		jRD1x1
 | 
			
		||||
#define jpeg_idct_9x9		jRD9x9
 | 
			
		||||
#define jpeg_idct_10x10		jRD10x10
 | 
			
		||||
#define jpeg_idct_11x11		jRD11x11
 | 
			
		||||
#define jpeg_idct_12x12		jRD12x12
 | 
			
		||||
#define jpeg_idct_13x13		jRD13x13
 | 
			
		||||
#define jpeg_idct_14x14		jRD14x14
 | 
			
		||||
#define jpeg_idct_15x15		jRD15x15
 | 
			
		||||
#define jpeg_idct_16x16		jRD16x16
 | 
			
		||||
#define jpeg_idct_16x8		jRD16x8
 | 
			
		||||
#define jpeg_idct_14x7		jRD14x7
 | 
			
		||||
#define jpeg_idct_12x6		jRD12x6
 | 
			
		||||
#define jpeg_idct_10x5		jRD10x5
 | 
			
		||||
#define jpeg_idct_8x4		jRD8x4
 | 
			
		||||
#define jpeg_idct_6x3		jRD6x3
 | 
			
		||||
#define jpeg_idct_4x2		jRD4x2
 | 
			
		||||
#define jpeg_idct_2x1		jRD2x1
 | 
			
		||||
#define jpeg_idct_8x16		jRD8x16
 | 
			
		||||
#define jpeg_idct_7x14		jRD7x14
 | 
			
		||||
#define jpeg_idct_6x12		jRD6x12
 | 
			
		||||
#define jpeg_idct_5x10		jRD5x10
 | 
			
		||||
#define jpeg_idct_4x8		jRD4x8
 | 
			
		||||
#define jpeg_idct_3x6		jRD3x8
 | 
			
		||||
#define jpeg_idct_2x4		jRD2x4
 | 
			
		||||
#define jpeg_idct_1x2		jRD1x2
 | 
			
		||||
#endif /* NEED_SHORT_EXTERNAL_NAMES */
 | 
			
		||||
 | 
			
		||||
/* Extern declarations for the forward and inverse DCT routines. */
 | 
			
		||||
 | 
			
		||||
EXTERN(void) jpeg_fdct_islow
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_ifast
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_float
 | 
			
		||||
    JPP((FAST_FLOAT * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_7x7
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_6x6
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_5x5
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_4x4
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_3x3
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_2x2
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_1x1
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_9x9
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_10x10
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_11x11
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_12x12
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_13x13
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_14x14
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_15x15
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_16x16
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_16x8
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_14x7
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_12x6
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_10x5
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_8x4
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_6x3
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_4x2
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_2x1
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_8x16
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_7x14
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_6x12
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_5x10
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_4x8
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_3x6
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_2x4
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
EXTERN(void) jpeg_fdct_1x2
 | 
			
		||||
    JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
 | 
			
		||||
 | 
			
		||||
EXTERN(void) jpeg_idct_islow
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_ifast
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_float
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_7x7
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_6x6
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_5x5
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_4x4
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_3x3
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_2x2
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_1x1
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_9x9
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_10x10
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_11x11
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_12x12
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_13x13
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_14x14
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_15x15
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_16x16
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_16x8
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_14x7
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_12x6
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_10x5
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_8x4
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_6x3
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_4x2
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_2x1
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_8x16
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_7x14
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_6x12
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_5x10
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_4x8
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_3x6
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_2x4
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
EXTERN(void) jpeg_idct_1x2
 | 
			
		||||
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Macros for handling fixed-point arithmetic; these are used by many
 | 
			
		||||
 * but not all of the DCT/IDCT modules.
 | 
			
		||||
 *
 | 
			
		||||
 * All values are expected to be of type INT32.
 | 
			
		||||
 * Fractional constants are scaled left by CONST_BITS bits.
 | 
			
		||||
 * CONST_BITS is defined within each module using these macros,
 | 
			
		||||
 * and may differ from one module to the next.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#define ONE	((INT32) 1)
 | 
			
		||||
#define CONST_SCALE (ONE << CONST_BITS)
 | 
			
		||||
 | 
			
		||||
/* Convert a positive real constant to an integer scaled by CONST_SCALE.
 | 
			
		||||
 * Caution: some C compilers fail to reduce "FIX(constant)" at compile time,
 | 
			
		||||
 * thus causing a lot of useless floating-point operations at run time.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#define FIX(x)	((INT32) ((x) * CONST_SCALE + 0.5))
 | 
			
		||||
 | 
			
		||||
/* Descale and correctly round an INT32 value that's scaled by N bits.
 | 
			
		||||
 * We assume RIGHT_SHIFT rounds towards minus infinity, so adding
 | 
			
		||||
 * the fudge factor is correct for either sign of X.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#define DESCALE(x,n)  RIGHT_SHIFT((x) + (ONE << ((n)-1)), n)
 | 
			
		||||
 | 
			
		||||
/* Multiply an INT32 variable by an INT32 constant to yield an INT32 result.
 | 
			
		||||
 * This macro is used only when the two inputs will actually be no more than
 | 
			
		||||
 * 16 bits wide, so that a 16x16->32 bit multiply can be used instead of a
 | 
			
		||||
 * full 32x32 multiply.  This provides a useful speedup on many machines.
 | 
			
		||||
 * Unfortunately there is no way to specify a 16x16->32 multiply portably
 | 
			
		||||
 * in C, but some C compilers will do the right thing if you provide the
 | 
			
		||||
 * correct combination of casts.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifdef SHORTxSHORT_32		/* may work if 'int' is 32 bits */
 | 
			
		||||
#define MULTIPLY16C16(var,const)  (((INT16) (var)) * ((INT16) (const)))
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef SHORTxLCONST_32		/* known to work with Microsoft C 6.0 */
 | 
			
		||||
#define MULTIPLY16C16(var,const)  (((INT16) (var)) * ((INT32) (const)))
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef MULTIPLY16C16		/* default definition */
 | 
			
		||||
#define MULTIPLY16C16(var,const)  ((var) * (const))
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Same except both inputs are variables. */
 | 
			
		||||
 | 
			
		||||
#ifdef SHORTxSHORT_32		/* may work if 'int' is 32 bits */
 | 
			
		||||
#define MULTIPLY16V16(var1,var2)  (((INT16) (var1)) * ((INT16) (var2)))
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef MULTIPLY16V16		/* default definition */
 | 
			
		||||
#define MULTIPLY16V16(var1,var2)  ((var1) * (var2))
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										304
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/include/jerror.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										304
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/include/jerror.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,304 @@
 | 
			
		||||
/*
 | 
			
		||||
 * jerror.h
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 1994-1997, Thomas G. Lane.
 | 
			
		||||
 * Modified 1997-2009 by Guido Vollbeding.
 | 
			
		||||
 * This file is part of the Independent JPEG Group's software.
 | 
			
		||||
 * For conditions of distribution and use, see the accompanying README file.
 | 
			
		||||
 *
 | 
			
		||||
 * This file defines the error and message codes for the JPEG library.
 | 
			
		||||
 * Edit this file to add new codes, or to translate the message strings to
 | 
			
		||||
 * some other language.
 | 
			
		||||
 * A set of error-reporting macros are defined too.  Some applications using
 | 
			
		||||
 * the JPEG library may wish to include this file to get the error codes
 | 
			
		||||
 * and/or the macros.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * To define the enum list of message codes, include this file without
 | 
			
		||||
 * defining macro JMESSAGE.  To create a message string table, include it
 | 
			
		||||
 * again with a suitable JMESSAGE definition (see jerror.c for an example).
 | 
			
		||||
 */
 | 
			
		||||
#ifndef JMESSAGE
 | 
			
		||||
#ifndef JERROR_H
 | 
			
		||||
/* First time through, define the enum list */
 | 
			
		||||
#define JMAKE_ENUM_LIST
 | 
			
		||||
#else
 | 
			
		||||
/* Repeated inclusions of this file are no-ops unless JMESSAGE is defined */
 | 
			
		||||
#define JMESSAGE(code,string)
 | 
			
		||||
#endif /* JERROR_H */
 | 
			
		||||
#endif /* JMESSAGE */
 | 
			
		||||
 | 
			
		||||
#ifdef JMAKE_ENUM_LIST
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
 | 
			
		||||
#define JMESSAGE(code,string)	code ,
 | 
			
		||||
 | 
			
		||||
#endif /* JMAKE_ENUM_LIST */
 | 
			
		||||
 | 
			
		||||
JMESSAGE(JMSG_NOMESSAGE, "Bogus message code %d") /* Must be first entry! */
 | 
			
		||||
 | 
			
		||||
/* For maintenance convenience, list is alphabetical by message code name */
 | 
			
		||||
JMESSAGE(JERR_BAD_ALIGN_TYPE, "ALIGN_TYPE is wrong, please fix")
 | 
			
		||||
JMESSAGE(JERR_BAD_ALLOC_CHUNK, "MAX_ALLOC_CHUNK is wrong, please fix")
 | 
			
		||||
JMESSAGE(JERR_BAD_BUFFER_MODE, "Bogus buffer control mode")
 | 
			
		||||
JMESSAGE(JERR_BAD_COMPONENT_ID, "Invalid component ID %d in SOS")
 | 
			
		||||
JMESSAGE(JERR_BAD_CROP_SPEC, "Invalid crop request")
 | 
			
		||||
JMESSAGE(JERR_BAD_DCT_COEF, "DCT coefficient out of range")
 | 
			
		||||
JMESSAGE(JERR_BAD_DCTSIZE, "DCT scaled block size %dx%d not supported")
 | 
			
		||||
JMESSAGE(JERR_BAD_DROP_SAMPLING,
 | 
			
		||||
	 "Component index %d: mismatching sampling ratio %d:%d, %d:%d, %c")
 | 
			
		||||
JMESSAGE(JERR_BAD_HUFF_TABLE, "Bogus Huffman table definition")
 | 
			
		||||
JMESSAGE(JERR_BAD_IN_COLORSPACE, "Bogus input colorspace")
 | 
			
		||||
JMESSAGE(JERR_BAD_J_COLORSPACE, "Bogus JPEG colorspace")
 | 
			
		||||
JMESSAGE(JERR_BAD_LENGTH, "Bogus marker length")
 | 
			
		||||
JMESSAGE(JERR_BAD_LIB_VERSION,
 | 
			
		||||
	 "Wrong JPEG library version: library is %d, caller expects %d")
 | 
			
		||||
JMESSAGE(JERR_BAD_MCU_SIZE, "Sampling factors too large for interleaved scan")
 | 
			
		||||
JMESSAGE(JERR_BAD_POOL_ID, "Invalid memory pool code %d")
 | 
			
		||||
JMESSAGE(JERR_BAD_PRECISION, "Unsupported JPEG data precision %d")
 | 
			
		||||
JMESSAGE(JERR_BAD_PROGRESSION,
 | 
			
		||||
	 "Invalid progressive parameters Ss=%d Se=%d Ah=%d Al=%d")
 | 
			
		||||
JMESSAGE(JERR_BAD_PROG_SCRIPT,
 | 
			
		||||
	 "Invalid progressive parameters at scan script entry %d")
 | 
			
		||||
JMESSAGE(JERR_BAD_SAMPLING, "Bogus sampling factors")
 | 
			
		||||
JMESSAGE(JERR_BAD_SCAN_SCRIPT, "Invalid scan script at entry %d")
 | 
			
		||||
JMESSAGE(JERR_BAD_STATE, "Improper call to JPEG library in state %d")
 | 
			
		||||
JMESSAGE(JERR_BAD_STRUCT_SIZE,
 | 
			
		||||
	 "JPEG parameter struct mismatch: library thinks size is %u, caller expects %u")
 | 
			
		||||
JMESSAGE(JERR_BAD_VIRTUAL_ACCESS, "Bogus virtual array access")
 | 
			
		||||
JMESSAGE(JERR_BUFFER_SIZE, "Buffer passed to JPEG library is too small")
 | 
			
		||||
JMESSAGE(JERR_CANT_SUSPEND, "Suspension not allowed here")
 | 
			
		||||
JMESSAGE(JERR_CCIR601_NOTIMPL, "CCIR601 sampling not implemented yet")
 | 
			
		||||
JMESSAGE(JERR_COMPONENT_COUNT, "Too many color components: %d, max %d")
 | 
			
		||||
JMESSAGE(JERR_CONVERSION_NOTIMPL, "Unsupported color conversion request")
 | 
			
		||||
JMESSAGE(JERR_DAC_INDEX, "Bogus DAC index %d")
 | 
			
		||||
JMESSAGE(JERR_DAC_VALUE, "Bogus DAC value 0x%x")
 | 
			
		||||
JMESSAGE(JERR_DHT_INDEX, "Bogus DHT index %d")
 | 
			
		||||
JMESSAGE(JERR_DQT_INDEX, "Bogus DQT index %d")
 | 
			
		||||
JMESSAGE(JERR_EMPTY_IMAGE, "Empty JPEG image (DNL not supported)")
 | 
			
		||||
JMESSAGE(JERR_EMS_READ, "Read from EMS failed")
 | 
			
		||||
JMESSAGE(JERR_EMS_WRITE, "Write to EMS failed")
 | 
			
		||||
JMESSAGE(JERR_EOI_EXPECTED, "Didn't expect more than one scan")
 | 
			
		||||
JMESSAGE(JERR_FILE_READ, "Input file read error")
 | 
			
		||||
JMESSAGE(JERR_FILE_WRITE, "Output file write error --- out of disk space?")
 | 
			
		||||
JMESSAGE(JERR_FRACT_SAMPLE_NOTIMPL, "Fractional sampling not implemented yet")
 | 
			
		||||
JMESSAGE(JERR_HUFF_CLEN_OVERFLOW, "Huffman code size table overflow")
 | 
			
		||||
JMESSAGE(JERR_HUFF_MISSING_CODE, "Missing Huffman code table entry")
 | 
			
		||||
JMESSAGE(JERR_IMAGE_TOO_BIG, "Maximum supported image dimension is %u pixels")
 | 
			
		||||
JMESSAGE(JERR_INPUT_EMPTY, "Empty input file")
 | 
			
		||||
JMESSAGE(JERR_INPUT_EOF, "Premature end of input file")
 | 
			
		||||
JMESSAGE(JERR_MISMATCHED_QUANT_TABLE,
 | 
			
		||||
	 "Cannot transcode due to multiple use of quantization table %d")
 | 
			
		||||
JMESSAGE(JERR_MISSING_DATA, "Scan script does not transmit all data")
 | 
			
		||||
JMESSAGE(JERR_MODE_CHANGE, "Invalid color quantization mode change")
 | 
			
		||||
JMESSAGE(JERR_NOTIMPL, "Not implemented yet")
 | 
			
		||||
JMESSAGE(JERR_NOT_COMPILED, "Requested feature was omitted at compile time")
 | 
			
		||||
JMESSAGE(JERR_NO_ARITH_TABLE, "Arithmetic table 0x%02x was not defined")
 | 
			
		||||
JMESSAGE(JERR_NO_BACKING_STORE, "Backing store not supported")
 | 
			
		||||
JMESSAGE(JERR_NO_HUFF_TABLE, "Huffman table 0x%02x was not defined")
 | 
			
		||||
JMESSAGE(JERR_NO_IMAGE, "JPEG datastream contains no image")
 | 
			
		||||
JMESSAGE(JERR_NO_QUANT_TABLE, "Quantization table 0x%02x was not defined")
 | 
			
		||||
JMESSAGE(JERR_NO_SOI, "Not a JPEG file: starts with 0x%02x 0x%02x")
 | 
			
		||||
JMESSAGE(JERR_OUT_OF_MEMORY, "Insufficient memory (case %d)")
 | 
			
		||||
JMESSAGE(JERR_QUANT_COMPONENTS,
 | 
			
		||||
	 "Cannot quantize more than %d color components")
 | 
			
		||||
JMESSAGE(JERR_QUANT_FEW_COLORS, "Cannot quantize to fewer than %d colors")
 | 
			
		||||
JMESSAGE(JERR_QUANT_MANY_COLORS, "Cannot quantize to more than %d colors")
 | 
			
		||||
JMESSAGE(JERR_SOF_DUPLICATE, "Invalid JPEG file structure: two SOF markers")
 | 
			
		||||
JMESSAGE(JERR_SOF_NO_SOS, "Invalid JPEG file structure: missing SOS marker")
 | 
			
		||||
JMESSAGE(JERR_SOF_UNSUPPORTED, "Unsupported JPEG process: SOF type 0x%02x")
 | 
			
		||||
JMESSAGE(JERR_SOI_DUPLICATE, "Invalid JPEG file structure: two SOI markers")
 | 
			
		||||
JMESSAGE(JERR_SOS_NO_SOF, "Invalid JPEG file structure: SOS before SOF")
 | 
			
		||||
JMESSAGE(JERR_TFILE_CREATE, "Failed to create temporary file %s")
 | 
			
		||||
JMESSAGE(JERR_TFILE_READ, "Read failed on temporary file")
 | 
			
		||||
JMESSAGE(JERR_TFILE_SEEK, "Seek failed on temporary file")
 | 
			
		||||
JMESSAGE(JERR_TFILE_WRITE,
 | 
			
		||||
	 "Write failed on temporary file --- out of disk space?")
 | 
			
		||||
JMESSAGE(JERR_TOO_LITTLE_DATA, "Application transferred too few scanlines")
 | 
			
		||||
JMESSAGE(JERR_UNKNOWN_MARKER, "Unsupported marker type 0x%02x")
 | 
			
		||||
JMESSAGE(JERR_VIRTUAL_BUG, "Virtual array controller messed up")
 | 
			
		||||
JMESSAGE(JERR_WIDTH_OVERFLOW, "Image too wide for this implementation")
 | 
			
		||||
JMESSAGE(JERR_XMS_READ, "Read from XMS failed")
 | 
			
		||||
JMESSAGE(JERR_XMS_WRITE, "Write to XMS failed")
 | 
			
		||||
JMESSAGE(JMSG_COPYRIGHT, JCOPYRIGHT)
 | 
			
		||||
JMESSAGE(JMSG_VERSION, JVERSION)
 | 
			
		||||
JMESSAGE(JTRC_16BIT_TABLES,
 | 
			
		||||
	 "Caution: quantization tables are too coarse for baseline JPEG")
 | 
			
		||||
JMESSAGE(JTRC_ADOBE,
 | 
			
		||||
	 "Adobe APP14 marker: version %d, flags 0x%04x 0x%04x, transform %d")
 | 
			
		||||
JMESSAGE(JTRC_APP0, "Unknown APP0 marker (not JFIF), length %u")
 | 
			
		||||
JMESSAGE(JTRC_APP14, "Unknown APP14 marker (not Adobe), length %u")
 | 
			
		||||
JMESSAGE(JTRC_DAC, "Define Arithmetic Table 0x%02x: 0x%02x")
 | 
			
		||||
JMESSAGE(JTRC_DHT, "Define Huffman Table 0x%02x")
 | 
			
		||||
JMESSAGE(JTRC_DQT, "Define Quantization Table %d  precision %d")
 | 
			
		||||
JMESSAGE(JTRC_DRI, "Define Restart Interval %u")
 | 
			
		||||
JMESSAGE(JTRC_EMS_CLOSE, "Freed EMS handle %u")
 | 
			
		||||
JMESSAGE(JTRC_EMS_OPEN, "Obtained EMS handle %u")
 | 
			
		||||
JMESSAGE(JTRC_EOI, "End Of Image")
 | 
			
		||||
JMESSAGE(JTRC_HUFFBITS, "        %3d %3d %3d %3d %3d %3d %3d %3d")
 | 
			
		||||
JMESSAGE(JTRC_JFIF, "JFIF APP0 marker: version %d.%02d, density %dx%d  %d")
 | 
			
		||||
JMESSAGE(JTRC_JFIF_BADTHUMBNAILSIZE,
 | 
			
		||||
	 "Warning: thumbnail image size does not match data length %u")
 | 
			
		||||
JMESSAGE(JTRC_JFIF_EXTENSION,
 | 
			
		||||
	 "JFIF extension marker: type 0x%02x, length %u")
 | 
			
		||||
JMESSAGE(JTRC_JFIF_THUMBNAIL, "    with %d x %d thumbnail image")
 | 
			
		||||
JMESSAGE(JTRC_MISC_MARKER, "Miscellaneous marker 0x%02x, length %u")
 | 
			
		||||
JMESSAGE(JTRC_PARMLESS_MARKER, "Unexpected marker 0x%02x")
 | 
			
		||||
JMESSAGE(JTRC_QUANTVALS, "        %4u %4u %4u %4u %4u %4u %4u %4u")
 | 
			
		||||
JMESSAGE(JTRC_QUANT_3_NCOLORS, "Quantizing to %d = %d*%d*%d colors")
 | 
			
		||||
JMESSAGE(JTRC_QUANT_NCOLORS, "Quantizing to %d colors")
 | 
			
		||||
JMESSAGE(JTRC_QUANT_SELECTED, "Selected %d colors for quantization")
 | 
			
		||||
JMESSAGE(JTRC_RECOVERY_ACTION, "At marker 0x%02x, recovery action %d")
 | 
			
		||||
JMESSAGE(JTRC_RST, "RST%d")
 | 
			
		||||
JMESSAGE(JTRC_SMOOTH_NOTIMPL,
 | 
			
		||||
	 "Smoothing not supported with nonstandard sampling ratios")
 | 
			
		||||
JMESSAGE(JTRC_SOF, "Start Of Frame 0x%02x: width=%u, height=%u, components=%d")
 | 
			
		||||
JMESSAGE(JTRC_SOF_COMPONENT, "    Component %d: %dhx%dv q=%d")
 | 
			
		||||
JMESSAGE(JTRC_SOI, "Start of Image")
 | 
			
		||||
JMESSAGE(JTRC_SOS, "Start Of Scan: %d components")
 | 
			
		||||
JMESSAGE(JTRC_SOS_COMPONENT, "    Component %d: dc=%d ac=%d")
 | 
			
		||||
JMESSAGE(JTRC_SOS_PARAMS, "  Ss=%d, Se=%d, Ah=%d, Al=%d")
 | 
			
		||||
JMESSAGE(JTRC_TFILE_CLOSE, "Closed temporary file %s")
 | 
			
		||||
JMESSAGE(JTRC_TFILE_OPEN, "Opened temporary file %s")
 | 
			
		||||
JMESSAGE(JTRC_THUMB_JPEG,
 | 
			
		||||
	 "JFIF extension marker: JPEG-compressed thumbnail image, length %u")
 | 
			
		||||
JMESSAGE(JTRC_THUMB_PALETTE,
 | 
			
		||||
	 "JFIF extension marker: palette thumbnail image, length %u")
 | 
			
		||||
JMESSAGE(JTRC_THUMB_RGB,
 | 
			
		||||
	 "JFIF extension marker: RGB thumbnail image, length %u")
 | 
			
		||||
JMESSAGE(JTRC_UNKNOWN_IDS,
 | 
			
		||||
	 "Unrecognized component IDs %d %d %d, assuming YCbCr")
 | 
			
		||||
JMESSAGE(JTRC_XMS_CLOSE, "Freed XMS handle %u")
 | 
			
		||||
JMESSAGE(JTRC_XMS_OPEN, "Obtained XMS handle %u")
 | 
			
		||||
JMESSAGE(JWRN_ADOBE_XFORM, "Unknown Adobe color transform code %d")
 | 
			
		||||
JMESSAGE(JWRN_ARITH_BAD_CODE, "Corrupt JPEG data: bad arithmetic code")
 | 
			
		||||
JMESSAGE(JWRN_BOGUS_PROGRESSION,
 | 
			
		||||
	 "Inconsistent progression sequence for component %d coefficient %d")
 | 
			
		||||
JMESSAGE(JWRN_EXTRANEOUS_DATA,
 | 
			
		||||
	 "Corrupt JPEG data: %u extraneous bytes before marker 0x%02x")
 | 
			
		||||
JMESSAGE(JWRN_HIT_MARKER, "Corrupt JPEG data: premature end of data segment")
 | 
			
		||||
JMESSAGE(JWRN_HUFF_BAD_CODE, "Corrupt JPEG data: bad Huffman code")
 | 
			
		||||
JMESSAGE(JWRN_JFIF_MAJOR, "Warning: unknown JFIF revision number %d.%02d")
 | 
			
		||||
JMESSAGE(JWRN_JPEG_EOF, "Premature end of JPEG file")
 | 
			
		||||
JMESSAGE(JWRN_MUST_RESYNC,
 | 
			
		||||
	 "Corrupt JPEG data: found marker 0x%02x instead of RST%d")
 | 
			
		||||
JMESSAGE(JWRN_NOT_SEQUENTIAL, "Invalid SOS parameters for sequential JPEG")
 | 
			
		||||
JMESSAGE(JWRN_TOO_MUCH_DATA, "Application transferred too many scanlines")
 | 
			
		||||
 | 
			
		||||
#ifdef JMAKE_ENUM_LIST
 | 
			
		||||
 | 
			
		||||
  JMSG_LASTMSGCODE
 | 
			
		||||
} J_MESSAGE_CODE;
 | 
			
		||||
 | 
			
		||||
#undef JMAKE_ENUM_LIST
 | 
			
		||||
#endif /* JMAKE_ENUM_LIST */
 | 
			
		||||
 | 
			
		||||
/* Zap JMESSAGE macro so that future re-inclusions do nothing by default */
 | 
			
		||||
#undef JMESSAGE
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef JERROR_H
 | 
			
		||||
#define JERROR_H
 | 
			
		||||
 | 
			
		||||
/* Macros to simplify using the error and trace message stuff */
 | 
			
		||||
/* The first parameter is either type of cinfo pointer */
 | 
			
		||||
 | 
			
		||||
/* Fatal errors (print message and exit) */
 | 
			
		||||
#define ERREXIT(cinfo,code)  \
 | 
			
		||||
  ((cinfo)->err->msg_code = (code), \
 | 
			
		||||
   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
 | 
			
		||||
#define ERREXIT1(cinfo,code,p1)  \
 | 
			
		||||
  ((cinfo)->err->msg_code = (code), \
 | 
			
		||||
   (cinfo)->err->msg_parm.i[0] = (p1), \
 | 
			
		||||
   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
 | 
			
		||||
#define ERREXIT2(cinfo,code,p1,p2)  \
 | 
			
		||||
  ((cinfo)->err->msg_code = (code), \
 | 
			
		||||
   (cinfo)->err->msg_parm.i[0] = (p1), \
 | 
			
		||||
   (cinfo)->err->msg_parm.i[1] = (p2), \
 | 
			
		||||
   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
 | 
			
		||||
#define ERREXIT3(cinfo,code,p1,p2,p3)  \
 | 
			
		||||
  ((cinfo)->err->msg_code = (code), \
 | 
			
		||||
   (cinfo)->err->msg_parm.i[0] = (p1), \
 | 
			
		||||
   (cinfo)->err->msg_parm.i[1] = (p2), \
 | 
			
		||||
   (cinfo)->err->msg_parm.i[2] = (p3), \
 | 
			
		||||
   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
 | 
			
		||||
#define ERREXIT4(cinfo,code,p1,p2,p3,p4)  \
 | 
			
		||||
  ((cinfo)->err->msg_code = (code), \
 | 
			
		||||
   (cinfo)->err->msg_parm.i[0] = (p1), \
 | 
			
		||||
   (cinfo)->err->msg_parm.i[1] = (p2), \
 | 
			
		||||
   (cinfo)->err->msg_parm.i[2] = (p3), \
 | 
			
		||||
   (cinfo)->err->msg_parm.i[3] = (p4), \
 | 
			
		||||
   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
 | 
			
		||||
#define ERREXIT6(cinfo,code,p1,p2,p3,p4,p5,p6)  \
 | 
			
		||||
  ((cinfo)->err->msg_code = (code), \
 | 
			
		||||
   (cinfo)->err->msg_parm.i[0] = (p1), \
 | 
			
		||||
   (cinfo)->err->msg_parm.i[1] = (p2), \
 | 
			
		||||
   (cinfo)->err->msg_parm.i[2] = (p3), \
 | 
			
		||||
   (cinfo)->err->msg_parm.i[3] = (p4), \
 | 
			
		||||
   (cinfo)->err->msg_parm.i[4] = (p5), \
 | 
			
		||||
   (cinfo)->err->msg_parm.i[5] = (p6), \
 | 
			
		||||
   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
 | 
			
		||||
#define ERREXITS(cinfo,code,str)  \
 | 
			
		||||
  ((cinfo)->err->msg_code = (code), \
 | 
			
		||||
   strncpy((cinfo)->err->msg_parm.s, (str), JMSG_STR_PARM_MAX), \
 | 
			
		||||
   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
 | 
			
		||||
 | 
			
		||||
#define MAKESTMT(stuff)		do { stuff } while (0)
 | 
			
		||||
 | 
			
		||||
/* Nonfatal errors (we can keep going, but the data is probably corrupt) */
 | 
			
		||||
#define WARNMS(cinfo,code)  \
 | 
			
		||||
  ((cinfo)->err->msg_code = (code), \
 | 
			
		||||
   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1))
 | 
			
		||||
#define WARNMS1(cinfo,code,p1)  \
 | 
			
		||||
  ((cinfo)->err->msg_code = (code), \
 | 
			
		||||
   (cinfo)->err->msg_parm.i[0] = (p1), \
 | 
			
		||||
   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1))
 | 
			
		||||
#define WARNMS2(cinfo,code,p1,p2)  \
 | 
			
		||||
  ((cinfo)->err->msg_code = (code), \
 | 
			
		||||
   (cinfo)->err->msg_parm.i[0] = (p1), \
 | 
			
		||||
   (cinfo)->err->msg_parm.i[1] = (p2), \
 | 
			
		||||
   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1))
 | 
			
		||||
 | 
			
		||||
/* Informational/debugging messages */
 | 
			
		||||
#define TRACEMS(cinfo,lvl,code)  \
 | 
			
		||||
  ((cinfo)->err->msg_code = (code), \
 | 
			
		||||
   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
 | 
			
		||||
#define TRACEMS1(cinfo,lvl,code,p1)  \
 | 
			
		||||
  ((cinfo)->err->msg_code = (code), \
 | 
			
		||||
   (cinfo)->err->msg_parm.i[0] = (p1), \
 | 
			
		||||
   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
 | 
			
		||||
#define TRACEMS2(cinfo,lvl,code,p1,p2)  \
 | 
			
		||||
  ((cinfo)->err->msg_code = (code), \
 | 
			
		||||
   (cinfo)->err->msg_parm.i[0] = (p1), \
 | 
			
		||||
   (cinfo)->err->msg_parm.i[1] = (p2), \
 | 
			
		||||
   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
 | 
			
		||||
#define TRACEMS3(cinfo,lvl,code,p1,p2,p3)  \
 | 
			
		||||
  MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
 | 
			
		||||
	   _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); \
 | 
			
		||||
	   (cinfo)->err->msg_code = (code); \
 | 
			
		||||
	   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
 | 
			
		||||
#define TRACEMS4(cinfo,lvl,code,p1,p2,p3,p4)  \
 | 
			
		||||
  MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
 | 
			
		||||
	   _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \
 | 
			
		||||
	   (cinfo)->err->msg_code = (code); \
 | 
			
		||||
	   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
 | 
			
		||||
#define TRACEMS5(cinfo,lvl,code,p1,p2,p3,p4,p5)  \
 | 
			
		||||
  MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
 | 
			
		||||
	   _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \
 | 
			
		||||
	   _mp[4] = (p5); \
 | 
			
		||||
	   (cinfo)->err->msg_code = (code); \
 | 
			
		||||
	   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
 | 
			
		||||
#define TRACEMS8(cinfo,lvl,code,p1,p2,p3,p4,p5,p6,p7,p8)  \
 | 
			
		||||
  MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
 | 
			
		||||
	   _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \
 | 
			
		||||
	   _mp[4] = (p5); _mp[5] = (p6); _mp[6] = (p7); _mp[7] = (p8); \
 | 
			
		||||
	   (cinfo)->err->msg_code = (code); \
 | 
			
		||||
	   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
 | 
			
		||||
#define TRACEMSS(cinfo,lvl,code,str)  \
 | 
			
		||||
  ((cinfo)->err->msg_code = (code), \
 | 
			
		||||
   strncpy((cinfo)->err->msg_parm.s, (str), JMSG_STR_PARM_MAX), \
 | 
			
		||||
   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
 | 
			
		||||
 | 
			
		||||
#endif /* JERROR_H */
 | 
			
		||||
							
								
								
									
										91
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/include/jinclude.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/include/jinclude.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,91 @@
 | 
			
		||||
/*
 | 
			
		||||
 * jinclude.h
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 1991-1994, Thomas G. Lane.
 | 
			
		||||
 * This file is part of the Independent JPEG Group's software.
 | 
			
		||||
 * For conditions of distribution and use, see the accompanying README file.
 | 
			
		||||
 *
 | 
			
		||||
 * This file exists to provide a single place to fix any problems with
 | 
			
		||||
 * including the wrong system include files.  (Common problems are taken
 | 
			
		||||
 * care of by the standard jconfig symbols, but on really weird systems
 | 
			
		||||
 * you may have to edit this file.)
 | 
			
		||||
 *
 | 
			
		||||
 * NOTE: this file is NOT intended to be included by applications using the
 | 
			
		||||
 * JPEG library.  Most applications need only include jpeglib.h.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Include auto-config file to find out which system include files we need. */
 | 
			
		||||
 | 
			
		||||
#include "jconfig.h"		/* auto configuration options */
 | 
			
		||||
#define JCONFIG_INCLUDED	/* so that jpeglib.h doesn't do it again */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * We need the NULL macro and size_t typedef.
 | 
			
		||||
 * On an ANSI-conforming system it is sufficient to include <stddef.h>.
 | 
			
		||||
 * Otherwise, we get them from <stdlib.h> or <stdio.h>; we may have to
 | 
			
		||||
 * pull in <sys/types.h> as well.
 | 
			
		||||
 * Note that the core JPEG library does not require <stdio.h>;
 | 
			
		||||
 * only the default error handler and data source/destination modules do.
 | 
			
		||||
 * But we must pull it in because of the references to FILE in jpeglib.h.
 | 
			
		||||
 * You can remove those references if you want to compile without <stdio.h>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_STDDEF_H
 | 
			
		||||
#include <stddef.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_STDLIB_H
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef NEED_SYS_TYPES_H
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * We need memory copying and zeroing functions, plus strncpy().
 | 
			
		||||
 * ANSI and System V implementations declare these in <string.h>.
 | 
			
		||||
 * BSD doesn't have the mem() functions, but it does have bcopy()/bzero().
 | 
			
		||||
 * Some systems may declare memset and memcpy in <memory.h>.
 | 
			
		||||
 *
 | 
			
		||||
 * NOTE: we assume the size parameters to these functions are of type size_t.
 | 
			
		||||
 * Change the casts in these macros if not!
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifdef NEED_BSD_STRINGS
 | 
			
		||||
 | 
			
		||||
#include <strings.h>
 | 
			
		||||
#define MEMZERO(target,size)	bzero((void *)(target), (size_t)(size))
 | 
			
		||||
#define MEMCOPY(dest,src,size)	bcopy((const void *)(src), (void *)(dest), (size_t)(size))
 | 
			
		||||
 | 
			
		||||
#else /* not BSD, assume ANSI/SysV string lib */
 | 
			
		||||
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#define MEMZERO(target,size)	memset((void *)(target), 0, (size_t)(size))
 | 
			
		||||
#define MEMCOPY(dest,src,size)	memcpy((void *)(dest), (const void *)(src), (size_t)(size))
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * In ANSI C, and indeed any rational implementation, size_t is also the
 | 
			
		||||
 * type returned by sizeof().  However, it seems there are some irrational
 | 
			
		||||
 * implementations out there, in which sizeof() returns an int even though
 | 
			
		||||
 * size_t is defined as long or unsigned long.  To ensure consistent results
 | 
			
		||||
 * we always use this SIZEOF() macro in place of using sizeof() directly.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#define SIZEOF(object)	((size_t) sizeof(object))
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * The modules that use fread() and fwrite() always invoke them through
 | 
			
		||||
 * these macros.  On some systems you may need to twiddle the argument casts.
 | 
			
		||||
 * CAUTION: argument order is different from underlying functions!
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#define JFREAD(file,buf,sizeofbuf)  \
 | 
			
		||||
  ((size_t) fread((void *) (buf), (size_t) 1, (size_t) (sizeofbuf), (file)))
 | 
			
		||||
#define JFWRITE(file,buf,sizeofbuf)  \
 | 
			
		||||
  ((size_t) fwrite((const void *) (buf), (size_t) 1, (size_t) (sizeofbuf), (file)))
 | 
			
		||||
							
								
								
									
										198
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/include/jmemsys.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										198
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/include/jmemsys.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,198 @@
 | 
			
		||||
/*
 | 
			
		||||
 * jmemsys.h
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 1992-1997, Thomas G. Lane.
 | 
			
		||||
 * This file is part of the Independent JPEG Group's software.
 | 
			
		||||
 * For conditions of distribution and use, see the accompanying README file.
 | 
			
		||||
 *
 | 
			
		||||
 * This include file defines the interface between the system-independent
 | 
			
		||||
 * and system-dependent portions of the JPEG memory manager.  No other
 | 
			
		||||
 * modules need include it.  (The system-independent portion is jmemmgr.c;
 | 
			
		||||
 * there are several different versions of the system-dependent portion.)
 | 
			
		||||
 *
 | 
			
		||||
 * This file works as-is for the system-dependent memory managers supplied
 | 
			
		||||
 * in the IJG distribution.  You may need to modify it if you write a
 | 
			
		||||
 * custom memory manager.  If system-dependent changes are needed in
 | 
			
		||||
 * this file, the best method is to #ifdef them based on a configuration
 | 
			
		||||
 * symbol supplied in jconfig.h, as we have done with USE_MSDOS_MEMMGR
 | 
			
		||||
 * and USE_MAC_MEMMGR.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Short forms of external names for systems with brain-damaged linkers. */
 | 
			
		||||
 | 
			
		||||
#ifdef NEED_SHORT_EXTERNAL_NAMES
 | 
			
		||||
#define jpeg_get_small		jGetSmall
 | 
			
		||||
#define jpeg_free_small		jFreeSmall
 | 
			
		||||
#define jpeg_get_large		jGetLarge
 | 
			
		||||
#define jpeg_free_large		jFreeLarge
 | 
			
		||||
#define jpeg_mem_available	jMemAvail
 | 
			
		||||
#define jpeg_open_backing_store	jOpenBackStore
 | 
			
		||||
#define jpeg_mem_init		jMemInit
 | 
			
		||||
#define jpeg_mem_term		jMemTerm
 | 
			
		||||
#endif /* NEED_SHORT_EXTERNAL_NAMES */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * These two functions are used to allocate and release small chunks of
 | 
			
		||||
 * memory.  (Typically the total amount requested through jpeg_get_small is
 | 
			
		||||
 * no more than 20K or so; this will be requested in chunks of a few K each.)
 | 
			
		||||
 * Behavior should be the same as for the standard library functions malloc
 | 
			
		||||
 * and free; in particular, jpeg_get_small must return NULL on failure.
 | 
			
		||||
 * On most systems, these ARE malloc and free.  jpeg_free_small is passed the
 | 
			
		||||
 * size of the object being freed, just in case it's needed.
 | 
			
		||||
 * On an 80x86 machine using small-data memory model, these manage near heap.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
EXTERN(void *) jpeg_get_small JPP((j_common_ptr cinfo, size_t sizeofobject));
 | 
			
		||||
EXTERN(void) jpeg_free_small JPP((j_common_ptr cinfo, void * object,
 | 
			
		||||
				  size_t sizeofobject));
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * These two functions are used to allocate and release large chunks of
 | 
			
		||||
 * memory (up to the total free space designated by jpeg_mem_available).
 | 
			
		||||
 * The interface is the same as above, except that on an 80x86 machine,
 | 
			
		||||
 * far pointers are used.  On most other machines these are identical to
 | 
			
		||||
 * the jpeg_get/free_small routines; but we keep them separate anyway,
 | 
			
		||||
 * in case a different allocation strategy is desirable for large chunks.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
EXTERN(void FAR *) jpeg_get_large JPP((j_common_ptr cinfo,
 | 
			
		||||
				       size_t sizeofobject));
 | 
			
		||||
EXTERN(void) jpeg_free_large JPP((j_common_ptr cinfo, void FAR * object,
 | 
			
		||||
				  size_t sizeofobject));
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * The macro MAX_ALLOC_CHUNK designates the maximum number of bytes that may
 | 
			
		||||
 * be requested in a single call to jpeg_get_large (and jpeg_get_small for that
 | 
			
		||||
 * matter, but that case should never come into play).  This macro is needed
 | 
			
		||||
 * to model the 64Kb-segment-size limit of far addressing on 80x86 machines.
 | 
			
		||||
 * On those machines, we expect that jconfig.h will provide a proper value.
 | 
			
		||||
 * On machines with 32-bit flat address spaces, any large constant may be used.
 | 
			
		||||
 *
 | 
			
		||||
 * NB: jmemmgr.c expects that MAX_ALLOC_CHUNK will be representable as type
 | 
			
		||||
 * size_t and will be a multiple of sizeof(align_type).
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef MAX_ALLOC_CHUNK		/* may be overridden in jconfig.h */
 | 
			
		||||
#define MAX_ALLOC_CHUNK  1000000000L
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * This routine computes the total space still available for allocation by
 | 
			
		||||
 * jpeg_get_large.  If more space than this is needed, backing store will be
 | 
			
		||||
 * used.  NOTE: any memory already allocated must not be counted.
 | 
			
		||||
 *
 | 
			
		||||
 * There is a minimum space requirement, corresponding to the minimum
 | 
			
		||||
 * feasible buffer sizes; jmemmgr.c will request that much space even if
 | 
			
		||||
 * jpeg_mem_available returns zero.  The maximum space needed, enough to hold
 | 
			
		||||
 * all working storage in memory, is also passed in case it is useful.
 | 
			
		||||
 * Finally, the total space already allocated is passed.  If no better
 | 
			
		||||
 * method is available, cinfo->mem->max_memory_to_use - already_allocated
 | 
			
		||||
 * is often a suitable calculation.
 | 
			
		||||
 *
 | 
			
		||||
 * It is OK for jpeg_mem_available to underestimate the space available
 | 
			
		||||
 * (that'll just lead to more backing-store access than is really necessary).
 | 
			
		||||
 * However, an overestimate will lead to failure.  Hence it's wise to subtract
 | 
			
		||||
 * a slop factor from the true available space.  5% should be enough.
 | 
			
		||||
 *
 | 
			
		||||
 * On machines with lots of virtual memory, any large constant may be returned.
 | 
			
		||||
 * Conversely, zero may be returned to always use the minimum amount of memory.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
EXTERN(long) jpeg_mem_available JPP((j_common_ptr cinfo,
 | 
			
		||||
				     long min_bytes_needed,
 | 
			
		||||
				     long max_bytes_needed,
 | 
			
		||||
				     long already_allocated));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * This structure holds whatever state is needed to access a single
 | 
			
		||||
 * backing-store object.  The read/write/close method pointers are called
 | 
			
		||||
 * by jmemmgr.c to manipulate the backing-store object; all other fields
 | 
			
		||||
 * are private to the system-dependent backing store routines.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#define TEMP_NAME_LENGTH   64	/* max length of a temporary file's name */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef USE_MSDOS_MEMMGR		/* DOS-specific junk */
 | 
			
		||||
 | 
			
		||||
typedef unsigned short XMSH;	/* type of extended-memory handles */
 | 
			
		||||
typedef unsigned short EMSH;	/* type of expanded-memory handles */
 | 
			
		||||
 | 
			
		||||
typedef union {
 | 
			
		||||
  short file_handle;		/* DOS file handle if it's a temp file */
 | 
			
		||||
  XMSH xms_handle;		/* handle if it's a chunk of XMS */
 | 
			
		||||
  EMSH ems_handle;		/* handle if it's a chunk of EMS */
 | 
			
		||||
} handle_union;
 | 
			
		||||
 | 
			
		||||
#endif /* USE_MSDOS_MEMMGR */
 | 
			
		||||
 | 
			
		||||
#ifdef USE_MAC_MEMMGR		/* Mac-specific junk */
 | 
			
		||||
#include <Files.h>
 | 
			
		||||
#endif /* USE_MAC_MEMMGR */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
typedef struct backing_store_struct * backing_store_ptr;
 | 
			
		||||
 | 
			
		||||
typedef struct backing_store_struct {
 | 
			
		||||
  /* Methods for reading/writing/closing this backing-store object */
 | 
			
		||||
  JMETHOD(void, read_backing_store, (j_common_ptr cinfo,
 | 
			
		||||
				     backing_store_ptr info,
 | 
			
		||||
				     void FAR * buffer_address,
 | 
			
		||||
				     long file_offset, long byte_count));
 | 
			
		||||
  JMETHOD(void, write_backing_store, (j_common_ptr cinfo,
 | 
			
		||||
				      backing_store_ptr info,
 | 
			
		||||
				      void FAR * buffer_address,
 | 
			
		||||
				      long file_offset, long byte_count));
 | 
			
		||||
  JMETHOD(void, close_backing_store, (j_common_ptr cinfo,
 | 
			
		||||
				      backing_store_ptr info));
 | 
			
		||||
 | 
			
		||||
  /* Private fields for system-dependent backing-store management */
 | 
			
		||||
#ifdef USE_MSDOS_MEMMGR
 | 
			
		||||
  /* For the MS-DOS manager (jmemdos.c), we need: */
 | 
			
		||||
  handle_union handle;		/* reference to backing-store storage object */
 | 
			
		||||
  char temp_name[TEMP_NAME_LENGTH]; /* name if it's a file */
 | 
			
		||||
#else
 | 
			
		||||
#ifdef USE_MAC_MEMMGR
 | 
			
		||||
  /* For the Mac manager (jmemmac.c), we need: */
 | 
			
		||||
  short temp_file;		/* file reference number to temp file */
 | 
			
		||||
  FSSpec tempSpec;		/* the FSSpec for the temp file */
 | 
			
		||||
  char temp_name[TEMP_NAME_LENGTH]; /* name if it's a file */
 | 
			
		||||
#else
 | 
			
		||||
  /* For a typical implementation with temp files, we need: */
 | 
			
		||||
  FILE * temp_file;		/* stdio reference to temp file */
 | 
			
		||||
  char temp_name[TEMP_NAME_LENGTH]; /* name of temp file */
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
} backing_store_info;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Initial opening of a backing-store object.  This must fill in the
 | 
			
		||||
 * read/write/close pointers in the object.  The read/write routines
 | 
			
		||||
 * may take an error exit if the specified maximum file size is exceeded.
 | 
			
		||||
 * (If jpeg_mem_available always returns a large value, this routine can
 | 
			
		||||
 * just take an error exit.)
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
EXTERN(void) jpeg_open_backing_store JPP((j_common_ptr cinfo,
 | 
			
		||||
					  backing_store_ptr info,
 | 
			
		||||
					  long total_bytes_needed));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * These routines take care of any system-dependent initialization and
 | 
			
		||||
 * cleanup required.  jpeg_mem_init will be called before anything is
 | 
			
		||||
 * allocated (and, therefore, nothing in cinfo is of use except the error
 | 
			
		||||
 * manager pointer).  It should return a suitable default value for
 | 
			
		||||
 * max_memory_to_use; this may subsequently be overridden by the surrounding
 | 
			
		||||
 * application.  (Note that max_memory_to_use is only important if
 | 
			
		||||
 * jpeg_mem_available chooses to consult it ... no one else will.)
 | 
			
		||||
 * jpeg_mem_term may assume that all requested memory has been freed and that
 | 
			
		||||
 * all opened backing-store objects have been closed.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
EXTERN(long) jpeg_mem_init JPP((j_common_ptr cinfo));
 | 
			
		||||
EXTERN(void) jpeg_mem_term JPP((j_common_ptr cinfo));
 | 
			
		||||
							
								
								
									
										369
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/include/jmorecfg.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										369
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/include/jmorecfg.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,369 @@
 | 
			
		||||
/*
 | 
			
		||||
 * jmorecfg.h
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 1991-1997, Thomas G. Lane.
 | 
			
		||||
 * Modified 1997-2011 by Guido Vollbeding.
 | 
			
		||||
 * This file is part of the Independent JPEG Group's software.
 | 
			
		||||
 * For conditions of distribution and use, see the accompanying README file.
 | 
			
		||||
 *
 | 
			
		||||
 * This file contains additional configuration options that customize the
 | 
			
		||||
 * JPEG software for special applications or support machine-dependent
 | 
			
		||||
 * optimizations.  Most users will not need to touch this file.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Define BITS_IN_JSAMPLE as either
 | 
			
		||||
 *   8   for 8-bit sample values (the usual setting)
 | 
			
		||||
 *   12  for 12-bit sample values
 | 
			
		||||
 * Only 8 and 12 are legal data precisions for lossy JPEG according to the
 | 
			
		||||
 * JPEG standard, and the IJG code does not support anything else!
 | 
			
		||||
 * We do not support run-time selection of data precision, sorry.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#define BITS_IN_JSAMPLE  8	/* use 8 or 12 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Maximum number of components (color channels) allowed in JPEG image.
 | 
			
		||||
 * To meet the letter of the JPEG spec, set this to 255.  However, darn
 | 
			
		||||
 * few applications need more than 4 channels (maybe 5 for CMYK + alpha
 | 
			
		||||
 * mask).  We recommend 10 as a reasonable compromise; use 4 if you are
 | 
			
		||||
 * really short on memory.  (Each allowed component costs a hundred or so
 | 
			
		||||
 * bytes of storage, whether actually used in an image or not.)
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#define MAX_COMPONENTS  10	/* maximum number of image components */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Basic data types.
 | 
			
		||||
 * You may need to change these if you have a machine with unusual data
 | 
			
		||||
 * type sizes; for example, "char" not 8 bits, "short" not 16 bits,
 | 
			
		||||
 * or "long" not 32 bits.  We don't care whether "int" is 16 or 32 bits,
 | 
			
		||||
 * but it had better be at least 16.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* Representation of a single sample (pixel element value).
 | 
			
		||||
 * We frequently allocate large arrays of these, so it's important to keep
 | 
			
		||||
 * them small.  But if you have memory to burn and access to char or short
 | 
			
		||||
 * arrays is very slow on your hardware, you might want to change these.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#if BITS_IN_JSAMPLE == 8
 | 
			
		||||
/* JSAMPLE should be the smallest type that will hold the values 0..255.
 | 
			
		||||
 * You can use a signed char by having GETJSAMPLE mask it with 0xFF.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_UNSIGNED_CHAR
 | 
			
		||||
 | 
			
		||||
typedef unsigned char JSAMPLE;
 | 
			
		||||
#define GETJSAMPLE(value)  ((int) (value))
 | 
			
		||||
 | 
			
		||||
#else /* not HAVE_UNSIGNED_CHAR */
 | 
			
		||||
 | 
			
		||||
typedef char JSAMPLE;
 | 
			
		||||
#ifdef CHAR_IS_UNSIGNED
 | 
			
		||||
#define GETJSAMPLE(value)  ((int) (value))
 | 
			
		||||
#else
 | 
			
		||||
#define GETJSAMPLE(value)  ((int) (value) & 0xFF)
 | 
			
		||||
#endif /* CHAR_IS_UNSIGNED */
 | 
			
		||||
 | 
			
		||||
#endif /* HAVE_UNSIGNED_CHAR */
 | 
			
		||||
 | 
			
		||||
#define MAXJSAMPLE	255
 | 
			
		||||
#define CENTERJSAMPLE	128
 | 
			
		||||
 | 
			
		||||
#endif /* BITS_IN_JSAMPLE == 8 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if BITS_IN_JSAMPLE == 12
 | 
			
		||||
/* JSAMPLE should be the smallest type that will hold the values 0..4095.
 | 
			
		||||
 * On nearly all machines "short" will do nicely.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
typedef short JSAMPLE;
 | 
			
		||||
#define GETJSAMPLE(value)  ((int) (value))
 | 
			
		||||
 | 
			
		||||
#define MAXJSAMPLE	4095
 | 
			
		||||
#define CENTERJSAMPLE	2048
 | 
			
		||||
 | 
			
		||||
#endif /* BITS_IN_JSAMPLE == 12 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Representation of a DCT frequency coefficient.
 | 
			
		||||
 * This should be a signed value of at least 16 bits; "short" is usually OK.
 | 
			
		||||
 * Again, we allocate large arrays of these, but you can change to int
 | 
			
		||||
 * if you have memory to burn and "short" is really slow.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
typedef short JCOEF;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Compressed datastreams are represented as arrays of JOCTET.
 | 
			
		||||
 * These must be EXACTLY 8 bits wide, at least once they are written to
 | 
			
		||||
 * external storage.  Note that when using the stdio data source/destination
 | 
			
		||||
 * managers, this is also the data type passed to fread/fwrite.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_UNSIGNED_CHAR
 | 
			
		||||
 | 
			
		||||
typedef unsigned char JOCTET;
 | 
			
		||||
#define GETJOCTET(value)  (value)
 | 
			
		||||
 | 
			
		||||
#else /* not HAVE_UNSIGNED_CHAR */
 | 
			
		||||
 | 
			
		||||
typedef char JOCTET;
 | 
			
		||||
#ifdef CHAR_IS_UNSIGNED
 | 
			
		||||
#define GETJOCTET(value)  (value)
 | 
			
		||||
#else
 | 
			
		||||
#define GETJOCTET(value)  ((value) & 0xFF)
 | 
			
		||||
#endif /* CHAR_IS_UNSIGNED */
 | 
			
		||||
 | 
			
		||||
#endif /* HAVE_UNSIGNED_CHAR */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* These typedefs are used for various table entries and so forth.
 | 
			
		||||
 * They must be at least as wide as specified; but making them too big
 | 
			
		||||
 * won't cost a huge amount of memory, so we don't provide special
 | 
			
		||||
 * extraction code like we did for JSAMPLE.  (In other words, these
 | 
			
		||||
 * typedefs live at a different point on the speed/space tradeoff curve.)
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* UINT8 must hold at least the values 0..255. */
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_UNSIGNED_CHAR
 | 
			
		||||
typedef unsigned char UINT8;
 | 
			
		||||
#else /* not HAVE_UNSIGNED_CHAR */
 | 
			
		||||
#ifdef CHAR_IS_UNSIGNED
 | 
			
		||||
typedef char UINT8;
 | 
			
		||||
#else /* not CHAR_IS_UNSIGNED */
 | 
			
		||||
typedef short UINT8;
 | 
			
		||||
#endif /* CHAR_IS_UNSIGNED */
 | 
			
		||||
#endif /* HAVE_UNSIGNED_CHAR */
 | 
			
		||||
 | 
			
		||||
/* UINT16 must hold at least the values 0..65535. */
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_UNSIGNED_SHORT
 | 
			
		||||
typedef unsigned short UINT16;
 | 
			
		||||
#else /* not HAVE_UNSIGNED_SHORT */
 | 
			
		||||
typedef unsigned int UINT16;
 | 
			
		||||
#endif /* HAVE_UNSIGNED_SHORT */
 | 
			
		||||
 | 
			
		||||
/* INT16 must hold at least the values -32768..32767. */
 | 
			
		||||
 | 
			
		||||
#ifndef XMD_H			/* X11/xmd.h correctly defines INT16 */
 | 
			
		||||
typedef short INT16;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* INT32 must hold at least signed 32-bit values. */
 | 
			
		||||
 | 
			
		||||
#ifndef XMD_H			/* X11/xmd.h correctly defines INT32 */
 | 
			
		||||
#ifndef _BASETSD_H_		/* Microsoft defines it in basetsd.h */
 | 
			
		||||
#ifndef _BASETSD_H		/* MinGW is slightly different */
 | 
			
		||||
#ifndef QGLOBAL_H		/* Qt defines it in qglobal.h */
 | 
			
		||||
typedef long INT32;
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Datatype used for image dimensions.  The JPEG standard only supports
 | 
			
		||||
 * images up to 64K*64K due to 16-bit fields in SOF markers.  Therefore
 | 
			
		||||
 * "unsigned int" is sufficient on all machines.  However, if you need to
 | 
			
		||||
 * handle larger images and you don't mind deviating from the spec, you
 | 
			
		||||
 * can change this datatype.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
typedef unsigned int JDIMENSION;
 | 
			
		||||
 | 
			
		||||
#define JPEG_MAX_DIMENSION  65500L  /* a tad under 64K to prevent overflows */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* These macros are used in all function definitions and extern declarations.
 | 
			
		||||
 * You could modify them if you need to change function linkage conventions;
 | 
			
		||||
 * in particular, you'll need to do that to make the library a Windows DLL.
 | 
			
		||||
 * Another application is to make all functions global for use with debuggers
 | 
			
		||||
 * or code profilers that require it.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* a function called through method pointers: */
 | 
			
		||||
#define METHODDEF(type)		static type
 | 
			
		||||
/* a function used only in its module: */
 | 
			
		||||
#define LOCAL(type)		static type
 | 
			
		||||
/* a function referenced thru EXTERNs: */
 | 
			
		||||
#define GLOBAL(type)		type
 | 
			
		||||
/* a reference to a GLOBAL function: */
 | 
			
		||||
#define EXTERN(type)		extern type
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* This macro is used to declare a "method", that is, a function pointer.
 | 
			
		||||
 * We want to supply prototype parameters if the compiler can cope.
 | 
			
		||||
 * Note that the arglist parameter must be parenthesized!
 | 
			
		||||
 * Again, you can customize this if you need special linkage keywords.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_PROTOTYPES
 | 
			
		||||
#define JMETHOD(type,methodname,arglist)  type (*methodname) arglist
 | 
			
		||||
#else
 | 
			
		||||
#define JMETHOD(type,methodname,arglist)  type (*methodname) ()
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Here is the pseudo-keyword for declaring pointers that must be "far"
 | 
			
		||||
 * on 80x86 machines.  Most of the specialized coding for 80x86 is handled
 | 
			
		||||
 * by just saying "FAR *" where such a pointer is needed.  In a few places
 | 
			
		||||
 * explicit coding is needed; see uses of the NEED_FAR_POINTERS symbol.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef FAR
 | 
			
		||||
#ifdef NEED_FAR_POINTERS
 | 
			
		||||
#define FAR  far
 | 
			
		||||
#else
 | 
			
		||||
#define FAR
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * On a few systems, type boolean and/or its values FALSE, TRUE may appear
 | 
			
		||||
 * in standard header files.  Or you may have conflicts with application-
 | 
			
		||||
 * specific header files that you want to include together with these files.
 | 
			
		||||
 * Defining HAVE_BOOLEAN before including jpeglib.h should make it work.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef HAVE_BOOLEAN
 | 
			
		||||
typedef int boolean;
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef FALSE			/* in case these macros already exist */
 | 
			
		||||
#define FALSE	0		/* values of boolean */
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef TRUE
 | 
			
		||||
#define TRUE	1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * The remaining options affect code selection within the JPEG library,
 | 
			
		||||
 * but they don't need to be visible to most applications using the library.
 | 
			
		||||
 * To minimize application namespace pollution, the symbols won't be
 | 
			
		||||
 * defined unless JPEG_INTERNALS or JPEG_INTERNAL_OPTIONS has been defined.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifdef JPEG_INTERNALS
 | 
			
		||||
#define JPEG_INTERNAL_OPTIONS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef JPEG_INTERNAL_OPTIONS
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * These defines indicate whether to include various optional functions.
 | 
			
		||||
 * Undefining some of these symbols will produce a smaller but less capable
 | 
			
		||||
 * library.  Note that you can leave certain source files out of the
 | 
			
		||||
 * compilation/linking process if you've #undef'd the corresponding symbols.
 | 
			
		||||
 * (You may HAVE to do that if your compiler doesn't like null source files.)
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* Capability options common to encoder and decoder: */
 | 
			
		||||
 | 
			
		||||
#define DCT_ISLOW_SUPPORTED	/* slow but accurate integer algorithm */
 | 
			
		||||
#define DCT_IFAST_SUPPORTED	/* faster, less accurate integer method */
 | 
			
		||||
#define DCT_FLOAT_SUPPORTED	/* floating-point: accurate, fast on fast HW */
 | 
			
		||||
 | 
			
		||||
/* Encoder capability options: */
 | 
			
		||||
 | 
			
		||||
#define C_ARITH_CODING_SUPPORTED    /* Arithmetic coding back end? */
 | 
			
		||||
#define C_MULTISCAN_FILES_SUPPORTED /* Multiple-scan JPEG files? */
 | 
			
		||||
#define C_PROGRESSIVE_SUPPORTED	    /* Progressive JPEG? (Requires MULTISCAN)*/
 | 
			
		||||
#define DCT_SCALING_SUPPORTED	    /* Input rescaling via DCT? (Requires DCT_ISLOW)*/
 | 
			
		||||
#define ENTROPY_OPT_SUPPORTED	    /* Optimization of entropy coding parms? */
 | 
			
		||||
/* Note: if you selected 12-bit data precision, it is dangerous to turn off
 | 
			
		||||
 * ENTROPY_OPT_SUPPORTED.  The standard Huffman tables are only good for 8-bit
 | 
			
		||||
 * precision, so jchuff.c normally uses entropy optimization to compute
 | 
			
		||||
 * usable tables for higher precision.  If you don't want to do optimization,
 | 
			
		||||
 * you'll have to supply different default Huffman tables.
 | 
			
		||||
 * The exact same statements apply for progressive JPEG: the default tables
 | 
			
		||||
 * don't work for progressive mode.  (This may get fixed, however.)
 | 
			
		||||
 */
 | 
			
		||||
#define INPUT_SMOOTHING_SUPPORTED   /* Input image smoothing option? */
 | 
			
		||||
 | 
			
		||||
/* Decoder capability options: */
 | 
			
		||||
 | 
			
		||||
#define D_ARITH_CODING_SUPPORTED    /* Arithmetic coding back end? */
 | 
			
		||||
#define D_MULTISCAN_FILES_SUPPORTED /* Multiple-scan JPEG files? */
 | 
			
		||||
#define D_PROGRESSIVE_SUPPORTED	    /* Progressive JPEG? (Requires MULTISCAN)*/
 | 
			
		||||
#define IDCT_SCALING_SUPPORTED	    /* Output rescaling via IDCT? */
 | 
			
		||||
#define SAVE_MARKERS_SUPPORTED	    /* jpeg_save_markers() needed? */
 | 
			
		||||
#define BLOCK_SMOOTHING_SUPPORTED   /* Block smoothing? (Progressive only) */
 | 
			
		||||
#undef  UPSAMPLE_SCALING_SUPPORTED  /* Output rescaling at upsample stage? */
 | 
			
		||||
#define UPSAMPLE_MERGING_SUPPORTED  /* Fast path for sloppy upsampling? */
 | 
			
		||||
#define QUANT_1PASS_SUPPORTED	    /* 1-pass color quantization? */
 | 
			
		||||
#define QUANT_2PASS_SUPPORTED	    /* 2-pass color quantization? */
 | 
			
		||||
 | 
			
		||||
/* more capability options later, no doubt */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Ordering of RGB data in scanlines passed to or from the application.
 | 
			
		||||
 * If your application wants to deal with data in the order B,G,R, just
 | 
			
		||||
 * change these macros.  You can also deal with formats such as R,G,B,X
 | 
			
		||||
 * (one extra byte per pixel) by changing RGB_PIXELSIZE.  Note that changing
 | 
			
		||||
 * the offsets will also change the order in which colormap data is organized.
 | 
			
		||||
 * RESTRICTIONS:
 | 
			
		||||
 * 1. The sample applications cjpeg,djpeg do NOT support modified RGB formats.
 | 
			
		||||
 * 2. The color quantizer modules will not behave desirably if RGB_PIXELSIZE
 | 
			
		||||
 *    is not 3 (they don't understand about dummy color components!).  So you
 | 
			
		||||
 *    can't use color quantization if you change that value.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#define RGB_RED		2	/* Offset of Red in an RGB scanline element */
 | 
			
		||||
#define RGB_GREEN	1	/* Offset of Green */
 | 
			
		||||
#define RGB_BLUE	0	/* Offset of Blue */
 | 
			
		||||
#define RGB_PIXELSIZE	3	/* JSAMPLEs per RGB scanline element */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Definitions for speed-related optimizations. */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* If your compiler supports inline functions, define INLINE
 | 
			
		||||
 * as the inline keyword; otherwise define it as empty.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef INLINE
 | 
			
		||||
#ifdef __GNUC__			/* for instance, GNU C knows about inline */
 | 
			
		||||
#define INLINE __inline__
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef INLINE
 | 
			
		||||
#define INLINE			/* default is to define it as empty */
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* On some machines (notably 68000 series) "int" is 32 bits, but multiplying
 | 
			
		||||
 * two 16-bit shorts is faster than multiplying two ints.  Define MULTIPLIER
 | 
			
		||||
 * as short on such a machine.  MULTIPLIER must be at least 16 bits wide.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef MULTIPLIER
 | 
			
		||||
#define MULTIPLIER  int		/* type for fastest integer multiply */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* FAST_FLOAT should be either float or double, whichever is done faster
 | 
			
		||||
 * by your compiler.  (Note that this type is only used in the floating point
 | 
			
		||||
 * DCT routines, so it only matters if you've defined DCT_FLOAT_SUPPORTED.)
 | 
			
		||||
 * Typically, float is faster in ANSI C compilers, while double is faster in
 | 
			
		||||
 * pre-ANSI compilers (because they insist on converting to double anyway).
 | 
			
		||||
 * The code below therefore chooses float if we have ANSI-style prototypes.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef FAST_FLOAT
 | 
			
		||||
#ifdef HAVE_PROTOTYPES
 | 
			
		||||
#define FAST_FLOAT  float
 | 
			
		||||
#else
 | 
			
		||||
#define FAST_FLOAT  double
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* JPEG_INTERNAL_OPTIONS */
 | 
			
		||||
							
								
								
									
										426
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/include/jpegint.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										426
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/include/jpegint.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,426 @@
 | 
			
		||||
/*
 | 
			
		||||
 * jpegint.h
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 1991-1997, Thomas G. Lane.
 | 
			
		||||
 * Modified 1997-2011 by Guido Vollbeding.
 | 
			
		||||
 * This file is part of the Independent JPEG Group's software.
 | 
			
		||||
 * For conditions of distribution and use, see the accompanying README file.
 | 
			
		||||
 *
 | 
			
		||||
 * This file provides common declarations for the various JPEG modules.
 | 
			
		||||
 * These declarations are considered internal to the JPEG library; most
 | 
			
		||||
 * applications using the library shouldn't need to include this file.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Declarations for both compression & decompression */
 | 
			
		||||
 | 
			
		||||
typedef enum {			/* Operating modes for buffer controllers */
 | 
			
		||||
	JBUF_PASS_THRU,		/* Plain stripwise operation */
 | 
			
		||||
	/* Remaining modes require a full-image buffer to have been created */
 | 
			
		||||
	JBUF_SAVE_SOURCE,	/* Run source subobject only, save output */
 | 
			
		||||
	JBUF_CRANK_DEST,	/* Run dest subobject only, using saved data */
 | 
			
		||||
	JBUF_SAVE_AND_PASS	/* Run both subobjects, save output */
 | 
			
		||||
} J_BUF_MODE;
 | 
			
		||||
 | 
			
		||||
/* Values of global_state field (jdapi.c has some dependencies on ordering!) */
 | 
			
		||||
#define CSTATE_START	100	/* after create_compress */
 | 
			
		||||
#define CSTATE_SCANNING	101	/* start_compress done, write_scanlines OK */
 | 
			
		||||
#define CSTATE_RAW_OK	102	/* start_compress done, write_raw_data OK */
 | 
			
		||||
#define CSTATE_WRCOEFS	103	/* jpeg_write_coefficients done */
 | 
			
		||||
#define DSTATE_START	200	/* after create_decompress */
 | 
			
		||||
#define DSTATE_INHEADER	201	/* reading header markers, no SOS yet */
 | 
			
		||||
#define DSTATE_READY	202	/* found SOS, ready for start_decompress */
 | 
			
		||||
#define DSTATE_PRELOAD	203	/* reading multiscan file in start_decompress*/
 | 
			
		||||
#define DSTATE_PRESCAN	204	/* performing dummy pass for 2-pass quant */
 | 
			
		||||
#define DSTATE_SCANNING	205	/* start_decompress done, read_scanlines OK */
 | 
			
		||||
#define DSTATE_RAW_OK	206	/* start_decompress done, read_raw_data OK */
 | 
			
		||||
#define DSTATE_BUFIMAGE	207	/* expecting jpeg_start_output */
 | 
			
		||||
#define DSTATE_BUFPOST	208	/* looking for SOS/EOI in jpeg_finish_output */
 | 
			
		||||
#define DSTATE_RDCOEFS	209	/* reading file in jpeg_read_coefficients */
 | 
			
		||||
#define DSTATE_STOPPING	210	/* looking for EOI in jpeg_finish_decompress */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Declarations for compression modules */
 | 
			
		||||
 | 
			
		||||
/* Master control module */
 | 
			
		||||
struct jpeg_comp_master {
 | 
			
		||||
  JMETHOD(void, prepare_for_pass, (j_compress_ptr cinfo));
 | 
			
		||||
  JMETHOD(void, pass_startup, (j_compress_ptr cinfo));
 | 
			
		||||
  JMETHOD(void, finish_pass, (j_compress_ptr cinfo));
 | 
			
		||||
 | 
			
		||||
  /* State variables made visible to other modules */
 | 
			
		||||
  boolean call_pass_startup;	/* True if pass_startup must be called */
 | 
			
		||||
  boolean is_last_pass;		/* True during last pass */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Main buffer control (downsampled-data buffer) */
 | 
			
		||||
struct jpeg_c_main_controller {
 | 
			
		||||
  JMETHOD(void, start_pass, (j_compress_ptr cinfo, J_BUF_MODE pass_mode));
 | 
			
		||||
  JMETHOD(void, process_data, (j_compress_ptr cinfo,
 | 
			
		||||
			       JSAMPARRAY input_buf, JDIMENSION *in_row_ctr,
 | 
			
		||||
			       JDIMENSION in_rows_avail));
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Compression preprocessing (downsampling input buffer control) */
 | 
			
		||||
struct jpeg_c_prep_controller {
 | 
			
		||||
  JMETHOD(void, start_pass, (j_compress_ptr cinfo, J_BUF_MODE pass_mode));
 | 
			
		||||
  JMETHOD(void, pre_process_data, (j_compress_ptr cinfo,
 | 
			
		||||
				   JSAMPARRAY input_buf,
 | 
			
		||||
				   JDIMENSION *in_row_ctr,
 | 
			
		||||
				   JDIMENSION in_rows_avail,
 | 
			
		||||
				   JSAMPIMAGE output_buf,
 | 
			
		||||
				   JDIMENSION *out_row_group_ctr,
 | 
			
		||||
				   JDIMENSION out_row_groups_avail));
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Coefficient buffer control */
 | 
			
		||||
struct jpeg_c_coef_controller {
 | 
			
		||||
  JMETHOD(void, start_pass, (j_compress_ptr cinfo, J_BUF_MODE pass_mode));
 | 
			
		||||
  JMETHOD(boolean, compress_data, (j_compress_ptr cinfo,
 | 
			
		||||
				   JSAMPIMAGE input_buf));
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Colorspace conversion */
 | 
			
		||||
struct jpeg_color_converter {
 | 
			
		||||
  JMETHOD(void, start_pass, (j_compress_ptr cinfo));
 | 
			
		||||
  JMETHOD(void, color_convert, (j_compress_ptr cinfo,
 | 
			
		||||
				JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
 | 
			
		||||
				JDIMENSION output_row, int num_rows));
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Downsampling */
 | 
			
		||||
struct jpeg_downsampler {
 | 
			
		||||
  JMETHOD(void, start_pass, (j_compress_ptr cinfo));
 | 
			
		||||
  JMETHOD(void, downsample, (j_compress_ptr cinfo,
 | 
			
		||||
			     JSAMPIMAGE input_buf, JDIMENSION in_row_index,
 | 
			
		||||
			     JSAMPIMAGE output_buf,
 | 
			
		||||
			     JDIMENSION out_row_group_index));
 | 
			
		||||
 | 
			
		||||
  boolean need_context_rows;	/* TRUE if need rows above & below */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Forward DCT (also controls coefficient quantization) */
 | 
			
		||||
typedef JMETHOD(void, forward_DCT_ptr,
 | 
			
		||||
		(j_compress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
		 JSAMPARRAY sample_data, JBLOCKROW coef_blocks,
 | 
			
		||||
		 JDIMENSION start_row, JDIMENSION start_col,
 | 
			
		||||
		 JDIMENSION num_blocks));
 | 
			
		||||
 | 
			
		||||
struct jpeg_forward_dct {
 | 
			
		||||
  JMETHOD(void, start_pass, (j_compress_ptr cinfo));
 | 
			
		||||
  /* It is useful to allow each component to have a separate FDCT method. */
 | 
			
		||||
  forward_DCT_ptr forward_DCT[MAX_COMPONENTS];
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Entropy encoding */
 | 
			
		||||
struct jpeg_entropy_encoder {
 | 
			
		||||
  JMETHOD(void, start_pass, (j_compress_ptr cinfo, boolean gather_statistics));
 | 
			
		||||
  JMETHOD(boolean, encode_mcu, (j_compress_ptr cinfo, JBLOCKROW *MCU_data));
 | 
			
		||||
  JMETHOD(void, finish_pass, (j_compress_ptr cinfo));
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Marker writing */
 | 
			
		||||
struct jpeg_marker_writer {
 | 
			
		||||
  JMETHOD(void, write_file_header, (j_compress_ptr cinfo));
 | 
			
		||||
  JMETHOD(void, write_frame_header, (j_compress_ptr cinfo));
 | 
			
		||||
  JMETHOD(void, write_scan_header, (j_compress_ptr cinfo));
 | 
			
		||||
  JMETHOD(void, write_file_trailer, (j_compress_ptr cinfo));
 | 
			
		||||
  JMETHOD(void, write_tables_only, (j_compress_ptr cinfo));
 | 
			
		||||
  /* These routines are exported to allow insertion of extra markers */
 | 
			
		||||
  /* Probably only COM and APPn markers should be written this way */
 | 
			
		||||
  JMETHOD(void, write_marker_header, (j_compress_ptr cinfo, int marker,
 | 
			
		||||
				      unsigned int datalen));
 | 
			
		||||
  JMETHOD(void, write_marker_byte, (j_compress_ptr cinfo, int val));
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Declarations for decompression modules */
 | 
			
		||||
 | 
			
		||||
/* Master control module */
 | 
			
		||||
struct jpeg_decomp_master {
 | 
			
		||||
  JMETHOD(void, prepare_for_output_pass, (j_decompress_ptr cinfo));
 | 
			
		||||
  JMETHOD(void, finish_output_pass, (j_decompress_ptr cinfo));
 | 
			
		||||
 | 
			
		||||
  /* State variables made visible to other modules */
 | 
			
		||||
  boolean is_dummy_pass;	/* True during 1st pass for 2-pass quant */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Input control module */
 | 
			
		||||
struct jpeg_input_controller {
 | 
			
		||||
  JMETHOD(int, consume_input, (j_decompress_ptr cinfo));
 | 
			
		||||
  JMETHOD(void, reset_input_controller, (j_decompress_ptr cinfo));
 | 
			
		||||
  JMETHOD(void, start_input_pass, (j_decompress_ptr cinfo));
 | 
			
		||||
  JMETHOD(void, finish_input_pass, (j_decompress_ptr cinfo));
 | 
			
		||||
 | 
			
		||||
  /* State variables made visible to other modules */
 | 
			
		||||
  boolean has_multiple_scans;	/* True if file has multiple scans */
 | 
			
		||||
  boolean eoi_reached;		/* True when EOI has been consumed */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Main buffer control (downsampled-data buffer) */
 | 
			
		||||
struct jpeg_d_main_controller {
 | 
			
		||||
  JMETHOD(void, start_pass, (j_decompress_ptr cinfo, J_BUF_MODE pass_mode));
 | 
			
		||||
  JMETHOD(void, process_data, (j_decompress_ptr cinfo,
 | 
			
		||||
			       JSAMPARRAY output_buf, JDIMENSION *out_row_ctr,
 | 
			
		||||
			       JDIMENSION out_rows_avail));
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Coefficient buffer control */
 | 
			
		||||
struct jpeg_d_coef_controller {
 | 
			
		||||
  JMETHOD(void, start_input_pass, (j_decompress_ptr cinfo));
 | 
			
		||||
  JMETHOD(int, consume_data, (j_decompress_ptr cinfo));
 | 
			
		||||
  JMETHOD(void, start_output_pass, (j_decompress_ptr cinfo));
 | 
			
		||||
  JMETHOD(int, decompress_data, (j_decompress_ptr cinfo,
 | 
			
		||||
				 JSAMPIMAGE output_buf));
 | 
			
		||||
  /* Pointer to array of coefficient virtual arrays, or NULL if none */
 | 
			
		||||
  jvirt_barray_ptr *coef_arrays;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Decompression postprocessing (color quantization buffer control) */
 | 
			
		||||
struct jpeg_d_post_controller {
 | 
			
		||||
  JMETHOD(void, start_pass, (j_decompress_ptr cinfo, J_BUF_MODE pass_mode));
 | 
			
		||||
  JMETHOD(void, post_process_data, (j_decompress_ptr cinfo,
 | 
			
		||||
				    JSAMPIMAGE input_buf,
 | 
			
		||||
				    JDIMENSION *in_row_group_ctr,
 | 
			
		||||
				    JDIMENSION in_row_groups_avail,
 | 
			
		||||
				    JSAMPARRAY output_buf,
 | 
			
		||||
				    JDIMENSION *out_row_ctr,
 | 
			
		||||
				    JDIMENSION out_rows_avail));
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Marker reading & parsing */
 | 
			
		||||
struct jpeg_marker_reader {
 | 
			
		||||
  JMETHOD(void, reset_marker_reader, (j_decompress_ptr cinfo));
 | 
			
		||||
  /* Read markers until SOS or EOI.
 | 
			
		||||
   * Returns same codes as are defined for jpeg_consume_input:
 | 
			
		||||
   * JPEG_SUSPENDED, JPEG_REACHED_SOS, or JPEG_REACHED_EOI.
 | 
			
		||||
   */
 | 
			
		||||
  JMETHOD(int, read_markers, (j_decompress_ptr cinfo));
 | 
			
		||||
  /* Read a restart marker --- exported for use by entropy decoder only */
 | 
			
		||||
  jpeg_marker_parser_method read_restart_marker;
 | 
			
		||||
 | 
			
		||||
  /* State of marker reader --- nominally internal, but applications
 | 
			
		||||
   * supplying COM or APPn handlers might like to know the state.
 | 
			
		||||
   */
 | 
			
		||||
  boolean saw_SOI;		/* found SOI? */
 | 
			
		||||
  boolean saw_SOF;		/* found SOF? */
 | 
			
		||||
  int next_restart_num;		/* next restart number expected (0-7) */
 | 
			
		||||
  unsigned int discarded_bytes;	/* # of bytes skipped looking for a marker */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Entropy decoding */
 | 
			
		||||
struct jpeg_entropy_decoder {
 | 
			
		||||
  JMETHOD(void, start_pass, (j_decompress_ptr cinfo));
 | 
			
		||||
  JMETHOD(boolean, decode_mcu, (j_decompress_ptr cinfo,
 | 
			
		||||
				JBLOCKROW *MCU_data));
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Inverse DCT (also performs dequantization) */
 | 
			
		||||
typedef JMETHOD(void, inverse_DCT_method_ptr,
 | 
			
		||||
		(j_decompress_ptr cinfo, jpeg_component_info * compptr,
 | 
			
		||||
		 JCOEFPTR coef_block,
 | 
			
		||||
		 JSAMPARRAY output_buf, JDIMENSION output_col));
 | 
			
		||||
 | 
			
		||||
struct jpeg_inverse_dct {
 | 
			
		||||
  JMETHOD(void, start_pass, (j_decompress_ptr cinfo));
 | 
			
		||||
  /* It is useful to allow each component to have a separate IDCT method. */
 | 
			
		||||
  inverse_DCT_method_ptr inverse_DCT[MAX_COMPONENTS];
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Upsampling (note that upsampler must also call color converter) */
 | 
			
		||||
struct jpeg_upsampler {
 | 
			
		||||
  JMETHOD(void, start_pass, (j_decompress_ptr cinfo));
 | 
			
		||||
  JMETHOD(void, upsample, (j_decompress_ptr cinfo,
 | 
			
		||||
			   JSAMPIMAGE input_buf,
 | 
			
		||||
			   JDIMENSION *in_row_group_ctr,
 | 
			
		||||
			   JDIMENSION in_row_groups_avail,
 | 
			
		||||
			   JSAMPARRAY output_buf,
 | 
			
		||||
			   JDIMENSION *out_row_ctr,
 | 
			
		||||
			   JDIMENSION out_rows_avail));
 | 
			
		||||
 | 
			
		||||
  boolean need_context_rows;	/* TRUE if need rows above & below */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Colorspace conversion */
 | 
			
		||||
struct jpeg_color_deconverter {
 | 
			
		||||
  JMETHOD(void, start_pass, (j_decompress_ptr cinfo));
 | 
			
		||||
  JMETHOD(void, color_convert, (j_decompress_ptr cinfo,
 | 
			
		||||
				JSAMPIMAGE input_buf, JDIMENSION input_row,
 | 
			
		||||
				JSAMPARRAY output_buf, int num_rows));
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Color quantization or color precision reduction */
 | 
			
		||||
struct jpeg_color_quantizer {
 | 
			
		||||
  JMETHOD(void, start_pass, (j_decompress_ptr cinfo, boolean is_pre_scan));
 | 
			
		||||
  JMETHOD(void, color_quantize, (j_decompress_ptr cinfo,
 | 
			
		||||
				 JSAMPARRAY input_buf, JSAMPARRAY output_buf,
 | 
			
		||||
				 int num_rows));
 | 
			
		||||
  JMETHOD(void, finish_pass, (j_decompress_ptr cinfo));
 | 
			
		||||
  JMETHOD(void, new_color_map, (j_decompress_ptr cinfo));
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Miscellaneous useful macros */
 | 
			
		||||
 | 
			
		||||
#undef MAX
 | 
			
		||||
#define MAX(a,b)	((a) > (b) ? (a) : (b))
 | 
			
		||||
#undef MIN
 | 
			
		||||
#define MIN(a,b)	((a) < (b) ? (a) : (b))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* We assume that right shift corresponds to signed division by 2 with
 | 
			
		||||
 * rounding towards minus infinity.  This is correct for typical "arithmetic
 | 
			
		||||
 * shift" instructions that shift in copies of the sign bit.  But some
 | 
			
		||||
 * C compilers implement >> with an unsigned shift.  For these machines you
 | 
			
		||||
 * must define RIGHT_SHIFT_IS_UNSIGNED.
 | 
			
		||||
 * RIGHT_SHIFT provides a proper signed right shift of an INT32 quantity.
 | 
			
		||||
 * It is only applied with constant shift counts.  SHIFT_TEMPS must be
 | 
			
		||||
 * included in the variables of any routine using RIGHT_SHIFT.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifdef RIGHT_SHIFT_IS_UNSIGNED
 | 
			
		||||
#define SHIFT_TEMPS	INT32 shift_temp;
 | 
			
		||||
#define RIGHT_SHIFT(x,shft)  \
 | 
			
		||||
	((shift_temp = (x)) < 0 ? \
 | 
			
		||||
	 (shift_temp >> (shft)) | ((~((INT32) 0)) << (32-(shft))) : \
 | 
			
		||||
	 (shift_temp >> (shft)))
 | 
			
		||||
#else
 | 
			
		||||
#define SHIFT_TEMPS
 | 
			
		||||
#define RIGHT_SHIFT(x,shft)	((x) >> (shft))
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Short forms of external names for systems with brain-damaged linkers. */
 | 
			
		||||
 | 
			
		||||
#ifdef NEED_SHORT_EXTERNAL_NAMES
 | 
			
		||||
#define jinit_compress_master	jICompress
 | 
			
		||||
#define jinit_c_master_control	jICMaster
 | 
			
		||||
#define jinit_c_main_controller	jICMainC
 | 
			
		||||
#define jinit_c_prep_controller	jICPrepC
 | 
			
		||||
#define jinit_c_coef_controller	jICCoefC
 | 
			
		||||
#define jinit_color_converter	jICColor
 | 
			
		||||
#define jinit_downsampler	jIDownsampler
 | 
			
		||||
#define jinit_forward_dct	jIFDCT
 | 
			
		||||
#define jinit_huff_encoder	jIHEncoder
 | 
			
		||||
#define jinit_arith_encoder	jIAEncoder
 | 
			
		||||
#define jinit_marker_writer	jIMWriter
 | 
			
		||||
#define jinit_master_decompress	jIDMaster
 | 
			
		||||
#define jinit_d_main_controller	jIDMainC
 | 
			
		||||
#define jinit_d_coef_controller	jIDCoefC
 | 
			
		||||
#define jinit_d_post_controller	jIDPostC
 | 
			
		||||
#define jinit_input_controller	jIInCtlr
 | 
			
		||||
#define jinit_marker_reader	jIMReader
 | 
			
		||||
#define jinit_huff_decoder	jIHDecoder
 | 
			
		||||
#define jinit_arith_decoder	jIADecoder
 | 
			
		||||
#define jinit_inverse_dct	jIIDCT
 | 
			
		||||
#define jinit_upsampler		jIUpsampler
 | 
			
		||||
#define jinit_color_deconverter	jIDColor
 | 
			
		||||
#define jinit_1pass_quantizer	jI1Quant
 | 
			
		||||
#define jinit_2pass_quantizer	jI2Quant
 | 
			
		||||
#define jinit_merged_upsampler	jIMUpsampler
 | 
			
		||||
#define jinit_memory_mgr	jIMemMgr
 | 
			
		||||
#define jdiv_round_up		jDivRound
 | 
			
		||||
#define jround_up		jRound
 | 
			
		||||
#define jzero_far		jZeroFar
 | 
			
		||||
#define jcopy_sample_rows	jCopySamples
 | 
			
		||||
#define jcopy_block_row		jCopyBlocks
 | 
			
		||||
#define jpeg_zigzag_order	jZIGTable
 | 
			
		||||
#define jpeg_natural_order	jZAGTable
 | 
			
		||||
#define jpeg_natural_order7	jZAG7Table
 | 
			
		||||
#define jpeg_natural_order6	jZAG6Table
 | 
			
		||||
#define jpeg_natural_order5	jZAG5Table
 | 
			
		||||
#define jpeg_natural_order4	jZAG4Table
 | 
			
		||||
#define jpeg_natural_order3	jZAG3Table
 | 
			
		||||
#define jpeg_natural_order2	jZAG2Table
 | 
			
		||||
#define jpeg_aritab		jAriTab
 | 
			
		||||
#endif /* NEED_SHORT_EXTERNAL_NAMES */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* On normal machines we can apply MEMCOPY() and MEMZERO() to sample arrays
 | 
			
		||||
 * and coefficient-block arrays.  This won't work on 80x86 because the arrays
 | 
			
		||||
 * are FAR and we're assuming a small-pointer memory model.  However, some
 | 
			
		||||
 * DOS compilers provide far-pointer versions of memcpy() and memset() even
 | 
			
		||||
 * in the small-model libraries.  These will be used if USE_FMEM is defined.
 | 
			
		||||
 * Otherwise, the routines in jutils.c do it the hard way.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef NEED_FAR_POINTERS	/* normal case, same as regular macro */
 | 
			
		||||
#define FMEMZERO(target,size)	MEMZERO(target,size)
 | 
			
		||||
#else				/* 80x86 case */
 | 
			
		||||
#ifdef USE_FMEM
 | 
			
		||||
#define FMEMZERO(target,size)	_fmemset((void FAR *)(target), 0, (size_t)(size))
 | 
			
		||||
#else
 | 
			
		||||
EXTERN(void) jzero_far JPP((void FAR * target, size_t bytestozero));
 | 
			
		||||
#define FMEMZERO(target,size)	jzero_far(target, size)
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Compression module initialization routines */
 | 
			
		||||
EXTERN(void) jinit_compress_master JPP((j_compress_ptr cinfo));
 | 
			
		||||
EXTERN(void) jinit_c_master_control JPP((j_compress_ptr cinfo,
 | 
			
		||||
					 boolean transcode_only));
 | 
			
		||||
EXTERN(void) jinit_c_main_controller JPP((j_compress_ptr cinfo,
 | 
			
		||||
					  boolean need_full_buffer));
 | 
			
		||||
EXTERN(void) jinit_c_prep_controller JPP((j_compress_ptr cinfo,
 | 
			
		||||
					  boolean need_full_buffer));
 | 
			
		||||
EXTERN(void) jinit_c_coef_controller JPP((j_compress_ptr cinfo,
 | 
			
		||||
					  boolean need_full_buffer));
 | 
			
		||||
EXTERN(void) jinit_color_converter JPP((j_compress_ptr cinfo));
 | 
			
		||||
EXTERN(void) jinit_downsampler JPP((j_compress_ptr cinfo));
 | 
			
		||||
EXTERN(void) jinit_forward_dct JPP((j_compress_ptr cinfo));
 | 
			
		||||
EXTERN(void) jinit_huff_encoder JPP((j_compress_ptr cinfo));
 | 
			
		||||
EXTERN(void) jinit_arith_encoder JPP((j_compress_ptr cinfo));
 | 
			
		||||
EXTERN(void) jinit_marker_writer JPP((j_compress_ptr cinfo));
 | 
			
		||||
/* Decompression module initialization routines */
 | 
			
		||||
EXTERN(void) jinit_master_decompress JPP((j_decompress_ptr cinfo));
 | 
			
		||||
EXTERN(void) jinit_d_main_controller JPP((j_decompress_ptr cinfo,
 | 
			
		||||
					  boolean need_full_buffer));
 | 
			
		||||
EXTERN(void) jinit_d_coef_controller JPP((j_decompress_ptr cinfo,
 | 
			
		||||
					  boolean need_full_buffer));
 | 
			
		||||
EXTERN(void) jinit_d_post_controller JPP((j_decompress_ptr cinfo,
 | 
			
		||||
					  boolean need_full_buffer));
 | 
			
		||||
EXTERN(void) jinit_input_controller JPP((j_decompress_ptr cinfo));
 | 
			
		||||
EXTERN(void) jinit_marker_reader JPP((j_decompress_ptr cinfo));
 | 
			
		||||
EXTERN(void) jinit_huff_decoder JPP((j_decompress_ptr cinfo));
 | 
			
		||||
EXTERN(void) jinit_arith_decoder JPP((j_decompress_ptr cinfo));
 | 
			
		||||
EXTERN(void) jinit_inverse_dct JPP((j_decompress_ptr cinfo));
 | 
			
		||||
EXTERN(void) jinit_upsampler JPP((j_decompress_ptr cinfo));
 | 
			
		||||
EXTERN(void) jinit_color_deconverter JPP((j_decompress_ptr cinfo));
 | 
			
		||||
EXTERN(void) jinit_1pass_quantizer JPP((j_decompress_ptr cinfo));
 | 
			
		||||
EXTERN(void) jinit_2pass_quantizer JPP((j_decompress_ptr cinfo));
 | 
			
		||||
EXTERN(void) jinit_merged_upsampler JPP((j_decompress_ptr cinfo));
 | 
			
		||||
/* Memory manager initialization */
 | 
			
		||||
EXTERN(void) jinit_memory_mgr JPP((j_common_ptr cinfo));
 | 
			
		||||
 | 
			
		||||
/* Utility routines in jutils.c */
 | 
			
		||||
EXTERN(long) jdiv_round_up JPP((long a, long b));
 | 
			
		||||
EXTERN(long) jround_up JPP((long a, long b));
 | 
			
		||||
EXTERN(void) jcopy_sample_rows JPP((JSAMPARRAY input_array, int source_row,
 | 
			
		||||
				    JSAMPARRAY output_array, int dest_row,
 | 
			
		||||
				    int num_rows, JDIMENSION num_cols));
 | 
			
		||||
EXTERN(void) jcopy_block_row JPP((JBLOCKROW input_row, JBLOCKROW output_row,
 | 
			
		||||
				  JDIMENSION num_blocks));
 | 
			
		||||
/* Constant tables in jutils.c */
 | 
			
		||||
#if 0				/* This table is not actually needed in v6a */
 | 
			
		||||
extern const int jpeg_zigzag_order[]; /* natural coef order to zigzag order */
 | 
			
		||||
#endif
 | 
			
		||||
extern const int jpeg_natural_order[]; /* zigzag coef order to natural order */
 | 
			
		||||
extern const int jpeg_natural_order7[]; /* zz to natural order for 7x7 block */
 | 
			
		||||
extern const int jpeg_natural_order6[]; /* zz to natural order for 6x6 block */
 | 
			
		||||
extern const int jpeg_natural_order5[]; /* zz to natural order for 5x5 block */
 | 
			
		||||
extern const int jpeg_natural_order4[]; /* zz to natural order for 4x4 block */
 | 
			
		||||
extern const int jpeg_natural_order3[]; /* zz to natural order for 3x3 block */
 | 
			
		||||
extern const int jpeg_natural_order2[]; /* zz to natural order for 2x2 block */
 | 
			
		||||
 | 
			
		||||
/* Arithmetic coding probability estimation tables in jaricom.c */
 | 
			
		||||
extern const INT32 jpeg_aritab[];
 | 
			
		||||
 | 
			
		||||
/* Suppress undefined-structure complaints if necessary. */
 | 
			
		||||
 | 
			
		||||
#ifdef INCOMPLETE_TYPES_BROKEN
 | 
			
		||||
#ifndef AM_MEMORY_MANAGER	/* only jmemmgr.c defines these */
 | 
			
		||||
struct jvirt_sarray_control { long dummy; };
 | 
			
		||||
struct jvirt_barray_control { long dummy; };
 | 
			
		||||
#endif
 | 
			
		||||
#endif /* INCOMPLETE_TYPES_BROKEN */
 | 
			
		||||
							
								
								
									
										1160
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/include/jpeglib.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1160
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/include/jpeglib.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										14
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/include/jversion.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/include/jversion.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,14 @@
 | 
			
		||||
/*
 | 
			
		||||
 * jversion.h
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 1991-2012, Thomas G. Lane, Guido Vollbeding.
 | 
			
		||||
 * This file is part of the Independent JPEG Group's software.
 | 
			
		||||
 * For conditions of distribution and use, see the accompanying README file.
 | 
			
		||||
 *
 | 
			
		||||
 * This file contains software version identification.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define JVERSION	"8d  15-Jan-2012"
 | 
			
		||||
 | 
			
		||||
#define JCOPYRIGHT	"Copyright (C) 2012, Thomas G. Lane, Guido Vollbeding"
 | 
			
		||||
							
								
								
									
										213
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/include/transupp.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										213
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/include/transupp.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,213 @@
 | 
			
		||||
/*
 | 
			
		||||
 * transupp.h
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 1997-2011, Thomas G. Lane, Guido Vollbeding.
 | 
			
		||||
 * This file is part of the Independent JPEG Group's software.
 | 
			
		||||
 * For conditions of distribution and use, see the accompanying README file.
 | 
			
		||||
 *
 | 
			
		||||
 * This file contains declarations for image transformation routines and
 | 
			
		||||
 * other utility code used by the jpegtran sample application.  These are
 | 
			
		||||
 * NOT part of the core JPEG library.  But we keep these routines separate
 | 
			
		||||
 * from jpegtran.c to ease the task of maintaining jpegtran-like programs
 | 
			
		||||
 * that have other user interfaces.
 | 
			
		||||
 *
 | 
			
		||||
 * NOTE: all the routines declared here have very specific requirements
 | 
			
		||||
 * about when they are to be executed during the reading and writing of the
 | 
			
		||||
 * source and destination files.  See the comments in transupp.c, or see
 | 
			
		||||
 * jpegtran.c for an example of correct usage.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* If you happen not to want the image transform support, disable it here */
 | 
			
		||||
#ifndef TRANSFORMS_SUPPORTED
 | 
			
		||||
#define TRANSFORMS_SUPPORTED 1		/* 0 disables transform code */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Although rotating and flipping data expressed as DCT coefficients is not
 | 
			
		||||
 * hard, there is an asymmetry in the JPEG format specification for images
 | 
			
		||||
 * whose dimensions aren't multiples of the iMCU size.  The right and bottom
 | 
			
		||||
 * image edges are padded out to the next iMCU boundary with junk data; but
 | 
			
		||||
 * no padding is possible at the top and left edges.  If we were to flip
 | 
			
		||||
 * the whole image including the pad data, then pad garbage would become
 | 
			
		||||
 * visible at the top and/or left, and real pixels would disappear into the
 | 
			
		||||
 * pad margins --- perhaps permanently, since encoders & decoders may not
 | 
			
		||||
 * bother to preserve DCT blocks that appear to be completely outside the
 | 
			
		||||
 * nominal image area.  So, we have to exclude any partial iMCUs from the
 | 
			
		||||
 * basic transformation.
 | 
			
		||||
 *
 | 
			
		||||
 * Transpose is the only transformation that can handle partial iMCUs at the
 | 
			
		||||
 * right and bottom edges completely cleanly.  flip_h can flip partial iMCUs
 | 
			
		||||
 * at the bottom, but leaves any partial iMCUs at the right edge untouched.
 | 
			
		||||
 * Similarly flip_v leaves any partial iMCUs at the bottom edge untouched.
 | 
			
		||||
 * The other transforms are defined as combinations of these basic transforms
 | 
			
		||||
 * and process edge blocks in a way that preserves the equivalence.
 | 
			
		||||
 *
 | 
			
		||||
 * The "trim" option causes untransformable partial iMCUs to be dropped;
 | 
			
		||||
 * this is not strictly lossless, but it usually gives the best-looking
 | 
			
		||||
 * result for odd-size images.  Note that when this option is active,
 | 
			
		||||
 * the expected mathematical equivalences between the transforms may not hold.
 | 
			
		||||
 * (For example, -rot 270 -trim trims only the bottom edge, but -rot 90 -trim
 | 
			
		||||
 * followed by -rot 180 -trim trims both edges.)
 | 
			
		||||
 *
 | 
			
		||||
 * We also offer a lossless-crop option, which discards data outside a given
 | 
			
		||||
 * image region but losslessly preserves what is inside.  Like the rotate and
 | 
			
		||||
 * flip transforms, lossless crop is restricted by the JPEG format: the upper
 | 
			
		||||
 * left corner of the selected region must fall on an iMCU boundary.  If this
 | 
			
		||||
 * does not hold for the given crop parameters, we silently move the upper left
 | 
			
		||||
 * corner up and/or left to make it so, simultaneously increasing the region
 | 
			
		||||
 * dimensions to keep the lower right crop corner unchanged.  (Thus, the
 | 
			
		||||
 * output image covers at least the requested region, but may cover more.)
 | 
			
		||||
 * The adjustment of the region dimensions may be optionally disabled.
 | 
			
		||||
 *
 | 
			
		||||
 * We also provide a lossless-resize option, which is kind of a lossless-crop
 | 
			
		||||
 * operation in the DCT coefficient block domain - it discards higher-order
 | 
			
		||||
 * coefficients and losslessly preserves lower-order coefficients of a
 | 
			
		||||
 * sub-block.
 | 
			
		||||
 *
 | 
			
		||||
 * Rotate/flip transform, resize, and crop can be requested together in a
 | 
			
		||||
 * single invocation.  The crop is applied last --- that is, the crop region
 | 
			
		||||
 * is specified in terms of the destination image after transform/resize.
 | 
			
		||||
 *
 | 
			
		||||
 * We also offer a "force to grayscale" option, which simply discards the
 | 
			
		||||
 * chrominance channels of a YCbCr image.  This is lossless in the sense that
 | 
			
		||||
 * the luminance channel is preserved exactly.  It's not the same kind of
 | 
			
		||||
 * thing as the rotate/flip transformations, but it's convenient to handle it
 | 
			
		||||
 * as part of this package, mainly because the transformation routines have to
 | 
			
		||||
 * be aware of the option to know how many components to work on.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Short forms of external names for systems with brain-damaged linkers. */
 | 
			
		||||
 | 
			
		||||
#ifdef NEED_SHORT_EXTERNAL_NAMES
 | 
			
		||||
#define jtransform_parse_crop_spec	jTrParCrop
 | 
			
		||||
#define jtransform_request_workspace	jTrRequest
 | 
			
		||||
#define jtransform_adjust_parameters	jTrAdjust
 | 
			
		||||
#define jtransform_execute_transform	jTrExec
 | 
			
		||||
#define jtransform_perfect_transform	jTrPerfect
 | 
			
		||||
#define jcopy_markers_setup		jCMrkSetup
 | 
			
		||||
#define jcopy_markers_execute		jCMrkExec
 | 
			
		||||
#endif /* NEED_SHORT_EXTERNAL_NAMES */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Codes for supported types of image transformations.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
	JXFORM_NONE,		/* no transformation */
 | 
			
		||||
	JXFORM_FLIP_H,		/* horizontal flip */
 | 
			
		||||
	JXFORM_FLIP_V,		/* vertical flip */
 | 
			
		||||
	JXFORM_TRANSPOSE,	/* transpose across UL-to-LR axis */
 | 
			
		||||
	JXFORM_TRANSVERSE,	/* transpose across UR-to-LL axis */
 | 
			
		||||
	JXFORM_ROT_90,		/* 90-degree clockwise rotation */
 | 
			
		||||
	JXFORM_ROT_180,		/* 180-degree rotation */
 | 
			
		||||
	JXFORM_ROT_270		/* 270-degree clockwise (or 90 ccw) */
 | 
			
		||||
} JXFORM_CODE;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Codes for crop parameters, which can individually be unspecified,
 | 
			
		||||
 * positive or negative for xoffset or yoffset,
 | 
			
		||||
 * positive or forced for width or height.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
        JCROP_UNSET,
 | 
			
		||||
        JCROP_POS,
 | 
			
		||||
        JCROP_NEG,
 | 
			
		||||
        JCROP_FORCE
 | 
			
		||||
} JCROP_CODE;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Transform parameters struct.
 | 
			
		||||
 * NB: application must not change any elements of this struct after
 | 
			
		||||
 * calling jtransform_request_workspace.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
  /* Options: set by caller */
 | 
			
		||||
  JXFORM_CODE transform;	/* image transform operator */
 | 
			
		||||
  boolean perfect;		/* if TRUE, fail if partial MCUs are requested */
 | 
			
		||||
  boolean trim;			/* if TRUE, trim partial MCUs as needed */
 | 
			
		||||
  boolean force_grayscale;	/* if TRUE, convert color image to grayscale */
 | 
			
		||||
  boolean crop;			/* if TRUE, crop source image */
 | 
			
		||||
 | 
			
		||||
  /* Crop parameters: application need not set these unless crop is TRUE.
 | 
			
		||||
   * These can be filled in by jtransform_parse_crop_spec().
 | 
			
		||||
   */
 | 
			
		||||
  JDIMENSION crop_width;	/* Width of selected region */
 | 
			
		||||
  JCROP_CODE crop_width_set;	/* (forced disables adjustment) */
 | 
			
		||||
  JDIMENSION crop_height;	/* Height of selected region */
 | 
			
		||||
  JCROP_CODE crop_height_set;	/* (forced disables adjustment) */
 | 
			
		||||
  JDIMENSION crop_xoffset;	/* X offset of selected region */
 | 
			
		||||
  JCROP_CODE crop_xoffset_set;	/* (negative measures from right edge) */
 | 
			
		||||
  JDIMENSION crop_yoffset;	/* Y offset of selected region */
 | 
			
		||||
  JCROP_CODE crop_yoffset_set;	/* (negative measures from bottom edge) */
 | 
			
		||||
 | 
			
		||||
  /* Internal workspace: caller should not touch these */
 | 
			
		||||
  int num_components;		/* # of components in workspace */
 | 
			
		||||
  jvirt_barray_ptr * workspace_coef_arrays; /* workspace for transformations */
 | 
			
		||||
  JDIMENSION output_width;	/* cropped destination dimensions */
 | 
			
		||||
  JDIMENSION output_height;
 | 
			
		||||
  JDIMENSION x_crop_offset;	/* destination crop offsets measured in iMCUs */
 | 
			
		||||
  JDIMENSION y_crop_offset;
 | 
			
		||||
  int iMCU_sample_width;	/* destination iMCU size */
 | 
			
		||||
  int iMCU_sample_height;
 | 
			
		||||
} jpeg_transform_info;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if TRANSFORMS_SUPPORTED
 | 
			
		||||
 | 
			
		||||
/* Parse a crop specification (written in X11 geometry style) */
 | 
			
		||||
EXTERN(boolean) jtransform_parse_crop_spec
 | 
			
		||||
	JPP((jpeg_transform_info *info, const char *spec));
 | 
			
		||||
/* Request any required workspace */
 | 
			
		||||
EXTERN(boolean) jtransform_request_workspace
 | 
			
		||||
	JPP((j_decompress_ptr srcinfo, jpeg_transform_info *info));
 | 
			
		||||
/* Adjust output image parameters */
 | 
			
		||||
EXTERN(jvirt_barray_ptr *) jtransform_adjust_parameters
 | 
			
		||||
	JPP((j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
 | 
			
		||||
	     jvirt_barray_ptr *src_coef_arrays,
 | 
			
		||||
	     jpeg_transform_info *info));
 | 
			
		||||
/* Execute the actual transformation, if any */
 | 
			
		||||
EXTERN(void) jtransform_execute_transform
 | 
			
		||||
	JPP((j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
 | 
			
		||||
	     jvirt_barray_ptr *src_coef_arrays,
 | 
			
		||||
	     jpeg_transform_info *info));
 | 
			
		||||
/* Determine whether lossless transformation is perfectly
 | 
			
		||||
 * possible for a specified image and transformation.
 | 
			
		||||
 */
 | 
			
		||||
EXTERN(boolean) jtransform_perfect_transform
 | 
			
		||||
	JPP((JDIMENSION image_width, JDIMENSION image_height,
 | 
			
		||||
	     int MCU_width, int MCU_height,
 | 
			
		||||
	     JXFORM_CODE transform));
 | 
			
		||||
 | 
			
		||||
/* jtransform_execute_transform used to be called
 | 
			
		||||
 * jtransform_execute_transformation, but some compilers complain about
 | 
			
		||||
 * routine names that long.  This macro is here to avoid breaking any
 | 
			
		||||
 * old source code that uses the original name...
 | 
			
		||||
 */
 | 
			
		||||
#define jtransform_execute_transformation	jtransform_execute_transform
 | 
			
		||||
 | 
			
		||||
#endif /* TRANSFORMS_SUPPORTED */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Support for copying optional markers from source to destination file.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
	JCOPYOPT_NONE,		/* copy no optional markers */
 | 
			
		||||
	JCOPYOPT_COMMENTS,	/* copy only comment (COM) markers */
 | 
			
		||||
	JCOPYOPT_ALL		/* copy all optional markers */
 | 
			
		||||
} JCOPY_OPTION;
 | 
			
		||||
 | 
			
		||||
#define JCOPYOPT_DEFAULT  JCOPYOPT_COMMENTS	/* recommended default */
 | 
			
		||||
 | 
			
		||||
/* Setup decompression object to save desired markers in memory */
 | 
			
		||||
EXTERN(void) jcopy_markers_setup
 | 
			
		||||
	JPP((j_decompress_ptr srcinfo, JCOPY_OPTION option));
 | 
			
		||||
/* Copy markers saved in the given source object to the destination object */
 | 
			
		||||
EXTERN(void) jcopy_markers_execute
 | 
			
		||||
	JPP((j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
 | 
			
		||||
	     JCOPY_OPTION option));
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/lib/linux/libjpeg.a
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/lib/linux/libjpeg.a
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/lib/win32/libjpeg-8.a
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/lib/win32/libjpeg-8.a
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/lib/win32/libjpeg-8.dll
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/lib/win32/libjpeg-8.dll
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/lib/win32/libjpeg-8.lib
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Middlewares/ST/touchgfx/3rdparty/libjpeg/lib/win32/libjpeg-8.lib
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							@ -0,0 +1,224 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file common/AbstractPartition.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touchgfx::AbstractPartition class.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_ABSTRACTPARTITION_HPP
 | 
			
		||||
#define TOUCHGFX_ABSTRACTPARTITION_HPP
 | 
			
		||||
 | 
			
		||||
#include <touchgfx/hal/Types.hpp>
 | 
			
		||||
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
/**
 | 
			
		||||
 * This type defines an abstract interface to a storage partition for allocating memory slots of
 | 
			
		||||
 * equal size. The "partition" is not aware of the actual types stored in the partition
 | 
			
		||||
 * memory, hence it provides no mechanism for deleting C++ objects when clear()'ed.
 | 
			
		||||
 */
 | 
			
		||||
class AbstractPartition
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    /** Finalizes an instance of the AbstractPartition class. */
 | 
			
		||||
    virtual ~AbstractPartition();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets the address of the next available storage slot. The slot size is compared with
 | 
			
		||||
     * the specified size.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  size The size.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The address of an empty storage slot which contains minimum 'size' bytes.
 | 
			
		||||
     *
 | 
			
		||||
     * @note Asserts if 'size' is too large, or the storage is depleted.
 | 
			
		||||
     */
 | 
			
		||||
    virtual void* allocate(uint16_t size);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets the address of the specified index.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  index Zero-based index of the.
 | 
			
		||||
     * @param  size  The size.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The address of the appropriate storage slot which contains minimum 'size'
 | 
			
		||||
     *         bytes.
 | 
			
		||||
     *
 | 
			
		||||
     * @note Asserts if 'size' is too large.
 | 
			
		||||
     */
 | 
			
		||||
    virtual void* allocateAt(uint16_t index, uint16_t size);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets allocation count.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The currently allocated storage slots.
 | 
			
		||||
     */
 | 
			
		||||
    virtual uint16_t getAllocationCount() const;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Determines index of previously allocated location. Since the Partition concept is
 | 
			
		||||
     * loosely typed this method shall be used with care. The method does not guarantee that
 | 
			
		||||
     * the found object at the returned index is a valid object. It only tests whether or
 | 
			
		||||
     * not the object is within the bounds of the current partition allocations.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  address The location address to lookup.
 | 
			
		||||
     *
 | 
			
		||||
     * @return An uint16_t.
 | 
			
		||||
     */
 | 
			
		||||
    virtual uint16_t indexOf(const void* address);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Prepares the Partition for new allocations. Any objects present in the Partition
 | 
			
		||||
     * shall not be used after invoking this method.
 | 
			
		||||
     */
 | 
			
		||||
    virtual void clear();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets the capacity, i.e. the maximum allocation count.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The maximum allocation count.
 | 
			
		||||
     */
 | 
			
		||||
    virtual uint16_t capacity() const = 0;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets the address of the next available storage slot. The slot size is determined from
 | 
			
		||||
     * the size of type T.
 | 
			
		||||
     *
 | 
			
		||||
     * @tparam T Generic type parameter.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The address of an empty storage slot.
 | 
			
		||||
     *
 | 
			
		||||
     * @note Asserts if T is too large, or the storage is depleted.
 | 
			
		||||
     */
 | 
			
		||||
    template <typename T>
 | 
			
		||||
    void* allocate()
 | 
			
		||||
    {
 | 
			
		||||
        return allocate(static_cast<uint16_t>(sizeof(T)));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets the address of the specified storage slot. The slot size is determined from the
 | 
			
		||||
     * size of type T.
 | 
			
		||||
     *
 | 
			
		||||
     * @tparam T Generic type parameter.
 | 
			
		||||
     * @param  index Zero-based index of the.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The address of the appropriate storage slot.
 | 
			
		||||
     *
 | 
			
		||||
     * @note Asserts if T is too large.
 | 
			
		||||
     */
 | 
			
		||||
    template <typename T>
 | 
			
		||||
    void* allocateAt(uint16_t index)
 | 
			
		||||
    {
 | 
			
		||||
        return allocateAt(index, static_cast<uint16_t>(sizeof(T)));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets the object at the specified index.
 | 
			
		||||
     *
 | 
			
		||||
     * @tparam T Generic type parameter.
 | 
			
		||||
     * @param  index The index into the Partition storage where the returned object is located.
 | 
			
		||||
     *
 | 
			
		||||
     * @return A typed reference to the object at the specified index.
 | 
			
		||||
     */
 | 
			
		||||
    template <typename T>
 | 
			
		||||
    T& at(const uint16_t index)
 | 
			
		||||
    {
 | 
			
		||||
        return *static_cast<T*>(element(index));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * const version of at().
 | 
			
		||||
     *
 | 
			
		||||
     * @tparam T Generic type parameter.
 | 
			
		||||
     * @param  index Zero-based index of the.
 | 
			
		||||
     *
 | 
			
		||||
     * @return A T&
 | 
			
		||||
     */
 | 
			
		||||
    template <typename T>
 | 
			
		||||
    const T& at(const uint16_t index) const
 | 
			
		||||
    {
 | 
			
		||||
        return *static_cast<const T*>(element(index));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Determines if the specified object could have been previously allocated in the
 | 
			
		||||
     * partition. Since the Partition concept is loosely typed this method shall be used
 | 
			
		||||
     * with care. The method does not guarantee that the found object at the returned index
 | 
			
		||||
     * is a valid object. It only tests whether or not the object is within the bounds of
 | 
			
		||||
     * the current partition allocations.
 | 
			
		||||
     *
 | 
			
		||||
     * @tparam T Generic type parameter.
 | 
			
		||||
     * @param  pT Pointer to the object to look up.
 | 
			
		||||
     *
 | 
			
		||||
     * @return If the object seems to be allocated in the Partition, a Pair object
 | 
			
		||||
     *         containing a typed pointer to the object and an index into the Partition
 | 
			
		||||
     *         storage is returned. Otherwise, a Pair<0, 0> is returned.
 | 
			
		||||
     */
 | 
			
		||||
    template <class T>
 | 
			
		||||
    Pair<T*, uint16_t> find(const void* pT)
 | 
			
		||||
    {
 | 
			
		||||
        uint16_t index = indexOf(pT);
 | 
			
		||||
        if (0 < getAllocationCount() && index < getAllocationCount())
 | 
			
		||||
        {
 | 
			
		||||
            return Pair<T*, uint16_t>(&at<T>(index), index);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return Pair<T*, uint16_t>(0, (uint16_t)-1);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** Decreases number of allocations. */
 | 
			
		||||
    void dec()
 | 
			
		||||
    {
 | 
			
		||||
        if (allocations)
 | 
			
		||||
        {
 | 
			
		||||
            allocations--;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Access to concrete element-size. Used internally.
 | 
			
		||||
     *
 | 
			
		||||
     * @return An uint32_t.
 | 
			
		||||
     */
 | 
			
		||||
    virtual uint32_t element_size() = 0;
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    /**
 | 
			
		||||
     * Access to stored element. Used internally.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  index Zero-based index of the.
 | 
			
		||||
     *
 | 
			
		||||
     * @return null if it fails, else a void*.
 | 
			
		||||
     */
 | 
			
		||||
    virtual void* element(uint16_t index) = 0;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Access to stored element, const version.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  index Zero-based index of the.
 | 
			
		||||
     *
 | 
			
		||||
     * @return null if it fails, else a void*.
 | 
			
		||||
     */
 | 
			
		||||
    virtual const void* element(uint16_t index) const = 0;
 | 
			
		||||
 | 
			
		||||
    /** Initializes a new instance of the AbstractPartition class. */
 | 
			
		||||
    AbstractPartition();
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    uint16_t allocations;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_ABSTRACTPARTITION_HPP
 | 
			
		||||
							
								
								
									
										158
									
								
								Middlewares/ST/touchgfx/framework/include/common/Meta.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										158
									
								
								Middlewares/ST/touchgfx/framework/include/common/Meta.hpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,158 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file common/Meta.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touchgfx::meta namespace.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_META_HPP
 | 
			
		||||
#define TOUCHGFX_META_HPP
 | 
			
		||||
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
/**
 | 
			
		||||
 * Template meta-programming tools are grouped in this namespace
 | 
			
		||||
 */
 | 
			
		||||
namespace meta
 | 
			
		||||
{
 | 
			
		||||
/** Nil-type, indicates the end of a TypeList. */
 | 
			
		||||
struct Nil
 | 
			
		||||
{
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * TypeList, used for generating compile-time lists of types.
 | 
			
		||||
 *
 | 
			
		||||
 * @tparam First Type of the first.
 | 
			
		||||
 * @tparam Next  Type of the next.
 | 
			
		||||
 */
 | 
			
		||||
template <typename First, typename Next>
 | 
			
		||||
struct TypeList
 | 
			
		||||
{
 | 
			
		||||
    typedef First first; ///< The first element in the TypeList
 | 
			
		||||
    typedef Next next;   ///< Remainder of the TypeList
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Meta-function, selects the "maximum" type, i.e. the largest type.
 | 
			
		||||
 *
 | 
			
		||||
 * @tparam T1      Generic type parameter.
 | 
			
		||||
 * @tparam T2      Generic type parameter.
 | 
			
		||||
 * @tparam choose1 True if sizeof(T1) is larger than sizeof(T2).
 | 
			
		||||
 * @param  parameter1 The first parameter.
 | 
			
		||||
 */
 | 
			
		||||
template <typename T1, typename T2, bool choose1 = (sizeof(T1) > sizeof(T2))>
 | 
			
		||||
struct type_max
 | 
			
		||||
{
 | 
			
		||||
    typedef T1 type; ///< The resulting type (default case: sizeof(T1)>sizeof(T2))
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Specialization for the case where sizeof(T2) >= sizeof(T1).
 | 
			
		||||
 *
 | 
			
		||||
 * @tparam T1 Generic type parameter.
 | 
			
		||||
 * @tparam T2 Generic type parameter.
 | 
			
		||||
 */
 | 
			
		||||
template <typename T1, typename T2>
 | 
			
		||||
struct type_max<T1, T2, false>
 | 
			
		||||
{
 | 
			
		||||
    typedef T2 type; ///< The resulting type (default case: sizeof(T2)>=sizeof(T1))
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Meta-function signature, selects maximum type from TypeList.
 | 
			
		||||
 *
 | 
			
		||||
 * @tparam T Generic type parameter.
 | 
			
		||||
 */
 | 
			
		||||
template <typename T>
 | 
			
		||||
struct select_type_maxsize;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Specialization to dive into the list (inherits result from type_max).
 | 
			
		||||
 *
 | 
			
		||||
 * @tparam First Type of the first.
 | 
			
		||||
 * @tparam Next  Type of the next.
 | 
			
		||||
 */
 | 
			
		||||
template <typename First, typename Next>
 | 
			
		||||
struct select_type_maxsize<TypeList<First, Next> > : public type_max<First, typename select_type_maxsize<Next>::type>
 | 
			
		||||
{
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Specialization for loop termination (when type Nil encountered).
 | 
			
		||||
 *
 | 
			
		||||
 * @tparam First Type of the first.
 | 
			
		||||
 */
 | 
			
		||||
template <typename First>
 | 
			
		||||
struct select_type_maxsize<TypeList<First, Nil> >
 | 
			
		||||
{
 | 
			
		||||
    typedef First type;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Meta-function signature, joins typelist with type (or another typelist).
 | 
			
		||||
 *
 | 
			
		||||
 * @tparam TList Type of the list.
 | 
			
		||||
 * @tparam T     Generic type parameter.
 | 
			
		||||
 */
 | 
			
		||||
template <typename TList, typename T>
 | 
			
		||||
struct list_join;
 | 
			
		||||
 | 
			
		||||
/** Specialization for termination. */
 | 
			
		||||
template <>
 | 
			
		||||
struct list_join<Nil, Nil>
 | 
			
		||||
{
 | 
			
		||||
    typedef Nil result;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Specialization for "end-of-LHS", with RHS as type.
 | 
			
		||||
 *
 | 
			
		||||
 * @tparam T Generic type parameter.
 | 
			
		||||
 */
 | 
			
		||||
template <typename T>
 | 
			
		||||
struct list_join<Nil, T>
 | 
			
		||||
{
 | 
			
		||||
    typedef TypeList<T, Nil> result;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Specialization for "end-of-LHS", with RHS as a TypeList.
 | 
			
		||||
 *
 | 
			
		||||
 * @tparam First Type of the first.
 | 
			
		||||
 * @tparam Next  Type of the next.
 | 
			
		||||
 */
 | 
			
		||||
template <typename First, typename Next>
 | 
			
		||||
struct list_join<Nil, TypeList<First, Next> >
 | 
			
		||||
{
 | 
			
		||||
    typedef TypeList<First, Next> result;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Recursively joins a typelist (LHS) with a type or a type-list (RHS).
 | 
			
		||||
 *
 | 
			
		||||
 * @tparam First Type of the first.
 | 
			
		||||
 * @tparam Next  Type of the next.
 | 
			
		||||
 * @tparam T     Generic type parameter.
 | 
			
		||||
 */
 | 
			
		||||
template <typename First, typename Next, typename T>
 | 
			
		||||
struct list_join<TypeList<First, Next>, T>
 | 
			
		||||
{
 | 
			
		||||
    typedef TypeList<First, typename list_join<Next, T>::result> result;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace meta
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_META_HPP
 | 
			
		||||
@ -0,0 +1,91 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file common/Partition.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touchgfx::Partition class.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_PARTITION_HPP
 | 
			
		||||
#define TOUCHGFX_PARTITION_HPP
 | 
			
		||||
 | 
			
		||||
#include <common/AbstractPartition.hpp>
 | 
			
		||||
#include <common/Meta.hpp>
 | 
			
		||||
#include <touchgfx/hal/Types.hpp>
 | 
			
		||||
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
/**
 | 
			
		||||
 * This type provides a concrete Partition of memory-slots capable of holding any of the
 | 
			
		||||
 * specified list of types.
 | 
			
		||||
 *
 | 
			
		||||
 * The Partition is not aware of the types stored in the Partition memory, hence it
 | 
			
		||||
 * provides no mechanism for deleting C++ objects when the Partition is clear()'ed.
 | 
			
		||||
 *
 | 
			
		||||
 * This class implements AbstractPartition.
 | 
			
		||||
 *
 | 
			
		||||
 * @tparam ListOfTypes        Type of the list of types.
 | 
			
		||||
 * @tparam NUMBER_OF_ELEMENTS Type of the number of elements.
 | 
			
		||||
 *
 | 
			
		||||
 * @see AbstractPartition
 | 
			
		||||
 */
 | 
			
		||||
template <typename ListOfTypes, uint16_t NUMBER_OF_ELEMENTS>
 | 
			
		||||
class Partition : public AbstractPartition
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    /** Provides a generic public type containing the list of supported types. */
 | 
			
		||||
    typedef ListOfTypes SupportedTypesList;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Compile-time generated constants specifying the "element" or "slot" size used by this
 | 
			
		||||
     * partition.
 | 
			
		||||
     */
 | 
			
		||||
    enum
 | 
			
		||||
    {
 | 
			
		||||
        INTS_PR_ELEMENT = (sizeof(typename meta::select_type_maxsize<SupportedTypesList>::type) + sizeof(int) - 1) / sizeof(int),
 | 
			
		||||
        SIZE_OF_ELEMENT = INTS_PR_ELEMENT * sizeof(int)
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t capacity() const
 | 
			
		||||
    {
 | 
			
		||||
        return NUMBER_OF_ELEMENTS;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual uint32_t element_size()
 | 
			
		||||
    {
 | 
			
		||||
        return sizeof(stBlocks[0]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    virtual void* element(uint16_t index)
 | 
			
		||||
    {
 | 
			
		||||
        return &stBlocks[index];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual const void* element(uint16_t index) const
 | 
			
		||||
    {
 | 
			
		||||
        return &stBlocks[index];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    /** Internal type used for storage, in order to ensure "natural" alignment of elements. */
 | 
			
		||||
    struct Block
 | 
			
		||||
    {
 | 
			
		||||
        int filler[INTS_PR_ELEMENT];
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    Block stBlocks[NUMBER_OF_ELEMENTS]; ///< Actual memory storage
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_PARTITION_HPP
 | 
			
		||||
@ -0,0 +1,115 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file common/TouchGFXInit.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touch graphics generic initialization function.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_TOUCHGFXINIT_HPP
 | 
			
		||||
#define TOUCHGFX_TOUCHGFXINIT_HPP
 | 
			
		||||
 | 
			
		||||
#include <platform/driver/touch/TouchController.hpp>
 | 
			
		||||
#include <touchgfx/Application.hpp>
 | 
			
		||||
#include <touchgfx/Bitmap.hpp>
 | 
			
		||||
#include <touchgfx/Texts.hpp>
 | 
			
		||||
#include <touchgfx/TypedText.hpp>
 | 
			
		||||
#include <touchgfx/hal/DMA.hpp>
 | 
			
		||||
#include <touchgfx/hal/HAL.hpp>
 | 
			
		||||
#include <touchgfx/hal/Types.hpp>
 | 
			
		||||
#include <touchgfx/lcd/LCD.hpp>
 | 
			
		||||
#include <BitmapDatabase.hpp>
 | 
			
		||||
#include <fonts/ApplicationFontProvider.hpp>
 | 
			
		||||
#include <texts/TypedTextDatabase.hpp>
 | 
			
		||||
#include <gui/common/FrontendHeap.hpp>
 | 
			
		||||
 | 
			
		||||
static ApplicationFontProvider fontProvider; ///< The font provider
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * The global touchgfx namespace. All TouchGFX framework classes and global functions are placed in this namespace.
 | 
			
		||||
 */
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
/// @cond
 | 
			
		||||
 | 
			
		||||
static Texts texts; ///< The texts
 | 
			
		||||
 | 
			
		||||
template <class T>
 | 
			
		||||
HAL& getHAL(DMA_Interface& dma, LCD& display, TouchController& tc, int16_t width, int16_t height)
 | 
			
		||||
{
 | 
			
		||||
    static T hal(dma, display, tc, width, height);
 | 
			
		||||
    return hal;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// @endcond
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @globalfn
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * TouchGFX generic initialize.
 | 
			
		||||
 *
 | 
			
		||||
 * @tparam HALType The class type of the HAL subclass used for this port.
 | 
			
		||||
 * @param [in] dma                    Reference to the DMA implementation object to use. Can be of
 | 
			
		||||
 *                                    type NoDMA to disable the use of DMA for rendering.
 | 
			
		||||
 * @param [in] display                Reference to the LCD renderer implementation (subclass of
 | 
			
		||||
 *                                    LCD). Could be either LCD16bpp for RGB565 UIs, or
 | 
			
		||||
 *                                    LCD1bpp for monochrome UIs or LCD24bpp for 24bit
 | 
			
		||||
 *                                    displays using RGB888 UIs.
 | 
			
		||||
 * @param [in] tc                     Reference to the touch controller driver (or
 | 
			
		||||
 *                                    NoTouchController to disable touch input).
 | 
			
		||||
 * @param      width                  The \a native display width of the actual display, in pixels.
 | 
			
		||||
 *                                    This value is irrespective of whether the concrete UI
 | 
			
		||||
 *                                    should be portrait or landscape mode. It must match
 | 
			
		||||
 *                                    what the display itself is configured as.
 | 
			
		||||
 * @param      height                 The \a native display height of the actual display, in
 | 
			
		||||
 *                                    pixels. This value is irrespective of whether the
 | 
			
		||||
 *                                    concrete UI should be portrait or landscape mode. It
 | 
			
		||||
 *                                    must match what the display itself is configured as.
 | 
			
		||||
 * @param [in] bitmapCache            Optional pointer to starting address of a memory region in
 | 
			
		||||
 *                                    which to place the bitmap cache. Usually in external
 | 
			
		||||
 *                                    RAM. Pass 0 if bitmap caching is not used.
 | 
			
		||||
 * @param      bitmapCacheSize        Size of bitmap cache in bytes. Pass 0 if bitmap cache is not
 | 
			
		||||
 *                                    used.
 | 
			
		||||
 * @param      numberOfDynamicBitmaps (Optional) Number of dynamic bitmaps.
 | 
			
		||||
 *
 | 
			
		||||
 * @return A reference to the allocated (and initialized) HAL object.
 | 
			
		||||
 */
 | 
			
		||||
template <class HALType>
 | 
			
		||||
HAL& touchgfx_generic_init(DMA_Interface& dma, LCD& display, TouchController& tc, int16_t width, int16_t height,
 | 
			
		||||
                           uint16_t* bitmapCache, uint32_t bitmapCacheSize, uint32_t numberOfDynamicBitmaps = 0)
 | 
			
		||||
{
 | 
			
		||||
    HAL& hal = getHAL<HALType>(dma, display, tc, width, height);
 | 
			
		||||
    hal.initialize();
 | 
			
		||||
 | 
			
		||||
    Bitmap::registerBitmapDatabase(BitmapDatabase::getInstance(),
 | 
			
		||||
                                   BitmapDatabase::getInstanceSize(),
 | 
			
		||||
                                   bitmapCache,
 | 
			
		||||
                                   bitmapCacheSize,
 | 
			
		||||
                                   numberOfDynamicBitmaps);
 | 
			
		||||
 | 
			
		||||
    TypedText::registerTexts(&texts);
 | 
			
		||||
    Texts::setLanguage(0);
 | 
			
		||||
 | 
			
		||||
    FontManager::setFontProvider(&fontProvider);
 | 
			
		||||
 | 
			
		||||
    FrontendHeap::getInstance(); // We need to initialize the frontend heap.
 | 
			
		||||
 | 
			
		||||
    hal.registerEventListener(*(Application::getInstance()));
 | 
			
		||||
 | 
			
		||||
    return hal;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_TOUCHGFXINIT_HPP
 | 
			
		||||
							
								
								
									
										186
									
								
								Middlewares/ST/touchgfx/framework/include/mvp/MVPApplication.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										186
									
								
								Middlewares/ST/touchgfx/framework/include/mvp/MVPApplication.hpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,186 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file mvp/MVPApplication.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touchgfx::MVPApplication class.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_MVPAPPLICATION_HPP
 | 
			
		||||
#define TOUCHGFX_MVPAPPLICATION_HPP
 | 
			
		||||
 | 
			
		||||
#include <new>
 | 
			
		||||
#include <common/AbstractPartition.hpp>
 | 
			
		||||
#include <mvp/MVPHeap.hpp>
 | 
			
		||||
#include <mvp/Presenter.hpp>
 | 
			
		||||
#include <touchgfx/Application.hpp>
 | 
			
		||||
#include <touchgfx/Callback.hpp>
 | 
			
		||||
#include <touchgfx/Screen.hpp>
 | 
			
		||||
#include <touchgfx/hal/Types.hpp>
 | 
			
		||||
#include <touchgfx/transitions/Transition.hpp>
 | 
			
		||||
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
class Presenter;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * A specialization of the TouchGFX Application class that provides the necessary glue for
 | 
			
		||||
 * transitioning between presenter/view pairs.
 | 
			
		||||
 *
 | 
			
		||||
 * It maintains a callback for transitioning and evaluates this at each tick.
 | 
			
		||||
 *
 | 
			
		||||
 * @see Application
 | 
			
		||||
 */
 | 
			
		||||
class MVPApplication : public Application
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    /** Initializes a new instance of the MVPApplication class. */
 | 
			
		||||
    MVPApplication()
 | 
			
		||||
        : currentPresenter(0),
 | 
			
		||||
          pendingScreenTransitionCallback(0)
 | 
			
		||||
    {
 | 
			
		||||
        instance = this;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Handles the pending screen transition.
 | 
			
		||||
     *
 | 
			
		||||
     * Delegates the work to evaluatePendingScreenTransition()
 | 
			
		||||
     */
 | 
			
		||||
    virtual void handlePendingScreenTransition()
 | 
			
		||||
    {
 | 
			
		||||
        evaluatePendingScreenTransition();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    Presenter* currentPresenter; ///< Pointer to the currently active presenter.
 | 
			
		||||
 | 
			
		||||
    GenericCallback<>* pendingScreenTransitionCallback; ///< Callback for screen transitions. Will be set to something valid when a transition request is made.
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Evaluates the pending Callback instances. If a callback is valid, it is executed and
 | 
			
		||||
     * a Screen transition is executed.
 | 
			
		||||
     */
 | 
			
		||||
    void evaluatePendingScreenTransition()
 | 
			
		||||
    {
 | 
			
		||||
        if (pendingScreenTransitionCallback && pendingScreenTransitionCallback->isValid())
 | 
			
		||||
        {
 | 
			
		||||
            pendingScreenTransitionCallback->execute();
 | 
			
		||||
            pendingScreenTransitionCallback = 0;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Prepare screen transition. Private helper function for makeTransition. Do not use.
 | 
			
		||||
 *
 | 
			
		||||
 * @param [in] currentScreen    If non-null, the current screen.
 | 
			
		||||
 * @param [in] currentPresenter If non-null, the current presenter.
 | 
			
		||||
 * @param [in] currentTrans     If non-null, the current transaction.
 | 
			
		||||
 */
 | 
			
		||||
FORCE_INLINE_FUNCTION static void prepareTransition(Screen** currentScreen, Presenter** currentPresenter, Transition** currentTrans)
 | 
			
		||||
{
 | 
			
		||||
    Application::getInstance()->clearAllTimerWidgets();
 | 
			
		||||
 | 
			
		||||
    if (*currentTrans)
 | 
			
		||||
    {
 | 
			
		||||
        (*currentTrans)->tearDown();
 | 
			
		||||
    }
 | 
			
		||||
    if (*currentTrans)
 | 
			
		||||
    {
 | 
			
		||||
        (*currentTrans)->~Transition();
 | 
			
		||||
    }
 | 
			
		||||
    if (*currentScreen)
 | 
			
		||||
    {
 | 
			
		||||
        (*currentScreen)->tearDownScreen();
 | 
			
		||||
    }
 | 
			
		||||
    if (*currentPresenter)
 | 
			
		||||
    {
 | 
			
		||||
        (*currentPresenter)->deactivate();
 | 
			
		||||
    }
 | 
			
		||||
    if (*currentScreen)
 | 
			
		||||
    {
 | 
			
		||||
        (*currentScreen)->~Screen();
 | 
			
		||||
    }
 | 
			
		||||
    if (*currentPresenter)
 | 
			
		||||
    {
 | 
			
		||||
        (*currentPresenter)->~Presenter();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Finalize screen transition. Private helper function for makeTransition. Do not use.
 | 
			
		||||
 *
 | 
			
		||||
 * @param [in] newScreen     If non-null, the new screen.
 | 
			
		||||
 * @param [in] newPresenter  If non-null, the new presenter.
 | 
			
		||||
 * @param [in] newTransition If non-null, the new transition.
 | 
			
		||||
 */
 | 
			
		||||
FORCE_INLINE_FUNCTION static void finalizeTransition(Screen* newScreen, Presenter* newPresenter, Transition* newTransition)
 | 
			
		||||
{
 | 
			
		||||
    newScreen->setupScreen();
 | 
			
		||||
    newPresenter->activate();
 | 
			
		||||
    newScreen->bindTransition(*newTransition);
 | 
			
		||||
    newTransition->init();
 | 
			
		||||
    newTransition->invalidate();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Function for effectuating a screen transition (i.e. makes the requested new presenter/view
 | 
			
		||||
 * pair active). Once this function has returned, the new screen has been transitioned
 | 
			
		||||
 * to. Due to the memory allocation strategy of using the same memory area for all
 | 
			
		||||
 * screens, the old view/presenter will no longer exist when this function returns.
 | 
			
		||||
 *
 | 
			
		||||
 * Will properly clean up old screen (tearDownScreen, Presenter::deactivate) and call
 | 
			
		||||
 * setupScreen/activate on new view/presenter pair. Will also make sure the view,
 | 
			
		||||
 * presenter and model are correctly bound to each other.
 | 
			
		||||
 *
 | 
			
		||||
 * @tparam ScreenType    Class type for the View.
 | 
			
		||||
 * @tparam PresenterType Class type for the Presenter.
 | 
			
		||||
 * @tparam TransType     Class type for the Transition.
 | 
			
		||||
 * @tparam ModelType     Class type for the Model.
 | 
			
		||||
 * @param [in] currentScreen    Pointer to pointer to the current view.
 | 
			
		||||
 * @param [in] currentPresenter Pointer to pointer to the current presenter.
 | 
			
		||||
 * @param [in] heap             Reference to the heap containing the memory storage in which
 | 
			
		||||
 *                              to allocate.
 | 
			
		||||
 * @param [in] currentTrans     Pointer to pointer to the current transition.
 | 
			
		||||
 * @param [in] model            Pointer to model.
 | 
			
		||||
 *
 | 
			
		||||
 * @return Pointer to the new Presenter of the requested type. Incidentally it will be the same
 | 
			
		||||
 *         value as the old presenter due to memory reuse.
 | 
			
		||||
 */
 | 
			
		||||
template <class ScreenType, class PresenterType, class TransType, class ModelType>
 | 
			
		||||
PresenterType* makeTransition(Screen** currentScreen, Presenter** currentPresenter, MVPHeap& heap, Transition** currentTrans, ModelType* model)
 | 
			
		||||
{
 | 
			
		||||
    assert(sizeof(ScreenType) <= heap.screenStorage.element_size() && "View allocation error: Check that all views are added to FrontendHeap::ViewTypes");
 | 
			
		||||
    assert(sizeof(PresenterType) <= heap.presenterStorage.element_size() && "Presenter allocation error: Check that all presenters are added to FrontendHeap::PresenterTypes");
 | 
			
		||||
    assert(sizeof(TransType) <= heap.transitionStorage.element_size() && "Transition allocation error: Check that all transitions are added to FrontendHeap::TransitionTypes");
 | 
			
		||||
 | 
			
		||||
    prepareTransition(currentScreen, currentPresenter, currentTrans);
 | 
			
		||||
 | 
			
		||||
    TransType* newTransition = new (&heap.transitionStorage.at<TransType>(0)) TransType;
 | 
			
		||||
    ScreenType* newScreen = new (&heap.screenStorage.at<ScreenType>(0)) ScreenType;
 | 
			
		||||
    PresenterType* newPresenter = new (&heap.presenterStorage.at<PresenterType>(0)) PresenterType(*newScreen);
 | 
			
		||||
    *currentTrans = newTransition;
 | 
			
		||||
    *currentPresenter = newPresenter;
 | 
			
		||||
    *currentScreen = newScreen;
 | 
			
		||||
    model->bind(newPresenter);
 | 
			
		||||
    newPresenter->bind(model);
 | 
			
		||||
    newScreen->bind(*newPresenter);
 | 
			
		||||
 | 
			
		||||
    finalizeTransition((Screen*)newScreen, (Presenter*)newPresenter, (Transition*)newTransition);
 | 
			
		||||
 | 
			
		||||
    return newPresenter;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_MVPAPPLICATION_HPP
 | 
			
		||||
							
								
								
									
										72
									
								
								Middlewares/ST/touchgfx/framework/include/mvp/MVPHeap.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								Middlewares/ST/touchgfx/framework/include/mvp/MVPHeap.hpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,72 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file mvp/MVPHeap.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touchgfx::MVPHeap class.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_MVPHEAP_HPP
 | 
			
		||||
#define TOUCHGFX_MVPHEAP_HPP
 | 
			
		||||
 | 
			
		||||
#include "common/AbstractPartition.hpp"
 | 
			
		||||
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
class AbstractPartition;
 | 
			
		||||
class MVPApplication;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Generic heap class for MVP applications. Serves as a way of obtaining the memory storage
 | 
			
		||||
 * areas for presenters, screens, transitions and the concrete application.
 | 
			
		||||
 *
 | 
			
		||||
 * Subclassed by an application-specific heap which provides the actual storage areas.
 | 
			
		||||
 * This generic interface is used only in makeTransition.
 | 
			
		||||
 */
 | 
			
		||||
class MVPHeap
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    /**
 | 
			
		||||
     * Initializes a new instance of the MVPHeap class.
 | 
			
		||||
     *
 | 
			
		||||
     * @param [in] pres A memory partition containing enough memory to hold the largest
 | 
			
		||||
     *                  presenter.
 | 
			
		||||
     * @param [in] scr  A memory partition containing enough memory to hold the largest view.
 | 
			
		||||
     * @param [in] tra  A memory partition containing enough memory to hold the largest
 | 
			
		||||
     *                  transition.
 | 
			
		||||
     * @param [in] app  A reference to the MVPApplication instance.
 | 
			
		||||
     */
 | 
			
		||||
    MVPHeap(AbstractPartition& pres,
 | 
			
		||||
            AbstractPartition& scr,
 | 
			
		||||
            AbstractPartition& tra,
 | 
			
		||||
            MVPApplication& app)
 | 
			
		||||
        : presenterStorage(pres),
 | 
			
		||||
          screenStorage(scr),
 | 
			
		||||
          transitionStorage(tra),
 | 
			
		||||
          frontendApplication(app)
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** Finalizes an instance of the MVPHeap class. */
 | 
			
		||||
    virtual ~MVPHeap()
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    AbstractPartition& presenterStorage;  ///< A memory partition containing enough memory to hold the largest presenter.
 | 
			
		||||
    AbstractPartition& screenStorage;     ///< A memory partition containing enough memory to hold the largest view.
 | 
			
		||||
    AbstractPartition& transitionStorage; ///< A memory partition containing enough memory to hold the largest transition.
 | 
			
		||||
    MVPApplication& frontendApplication;  ///< A reference to the MVPApplication instance.
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_MVPHEAP_HPP
 | 
			
		||||
							
								
								
									
										65
									
								
								Middlewares/ST/touchgfx/framework/include/mvp/Presenter.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								Middlewares/ST/touchgfx/framework/include/mvp/Presenter.hpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,65 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file mvp/Presenter.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touchgfx::Presenter class.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_PRESENTER_HPP
 | 
			
		||||
#define TOUCHGFX_PRESENTER_HPP
 | 
			
		||||
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
/**
 | 
			
		||||
 * The Presenter base class that all application-specific presenters should derive from. Only
 | 
			
		||||
 * contains activate and deactivate virtual functions which are called automatically
 | 
			
		||||
 * during screen transition.
 | 
			
		||||
 */
 | 
			
		||||
class Presenter
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    /**
 | 
			
		||||
     * Place initialization code for the Presenter here.
 | 
			
		||||
     *
 | 
			
		||||
     * The activate function is called automatically when a screen transition causes this
 | 
			
		||||
     * Presenter to become active. Place initialization code for the Presenter here.
 | 
			
		||||
     */
 | 
			
		||||
    virtual void activate()
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Place cleanup code for the Presenter here.
 | 
			
		||||
     *
 | 
			
		||||
     * The deactivate function is called automatically when a screen transition causes this
 | 
			
		||||
     * Presenter to become inactive. Place cleanup code for the Presenter here.
 | 
			
		||||
     */
 | 
			
		||||
    virtual void deactivate()
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** Finalizes an instance of the Presenter class. */
 | 
			
		||||
    virtual ~Presenter()
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    /** Initializes a new instance of the Presenter class. */
 | 
			
		||||
    Presenter()
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_PRESENTER_HPP
 | 
			
		||||
							
								
								
									
										61
									
								
								Middlewares/ST/touchgfx/framework/include/mvp/View.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								Middlewares/ST/touchgfx/framework/include/mvp/View.hpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,61 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file mvp/View.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touchgfx::View class.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_VIEW_HPP
 | 
			
		||||
#define TOUCHGFX_VIEW_HPP
 | 
			
		||||
 | 
			
		||||
#include <touchgfx/Screen.hpp>
 | 
			
		||||
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
/**
 | 
			
		||||
 * This is a generic touchgfx::Screen specialization for normal applications. It provides a link
 | 
			
		||||
 * to the Presenter class.
 | 
			
		||||
 *
 | 
			
		||||
 * @tparam T The type of Presenter associated with this view.
 | 
			
		||||
 *
 | 
			
		||||
 * @see Screen
 | 
			
		||||
 *
 | 
			
		||||
 * @note All views in the application must be a subclass of this type.
 | 
			
		||||
 */
 | 
			
		||||
template <class T>
 | 
			
		||||
class View : public Screen
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    View()
 | 
			
		||||
        : presenter(0)
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Binds an instance of a specific Presenter type (subclass) to the View instance. This function
 | 
			
		||||
     * is called automatically when a new presenter/view pair is activated.
 | 
			
		||||
     *
 | 
			
		||||
     * @param [in] newPresenter The specific Presenter to be associated with the View.
 | 
			
		||||
     */
 | 
			
		||||
    void bind(T& newPresenter)
 | 
			
		||||
    {
 | 
			
		||||
        presenter = &newPresenter;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    T* presenter; ///< Pointer to the Presenter associated with this view.
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_VIEW_HPP
 | 
			
		||||
@ -0,0 +1,107 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file platform/core/MCUInstrumentation.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touchgfx::MCUInstrumentation interface class.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_MCUINSTRUMENTATION_HPP
 | 
			
		||||
#define TOUCHGFX_MCUINSTRUMENTATION_HPP
 | 
			
		||||
 | 
			
		||||
#include <touchgfx/hal/Types.hpp>
 | 
			
		||||
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
/** Interface for instrumenting processors to measure MCU load via measured CPU cycles. */
 | 
			
		||||
class MCUInstrumentation
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    /** Initializes a new instance of the MCUInstrumentation class. */
 | 
			
		||||
    MCUInstrumentation()
 | 
			
		||||
        : cc_consumed(0),
 | 
			
		||||
          cc_in(0)
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** Initialize. */
 | 
			
		||||
    virtual void init() = 0;
 | 
			
		||||
 | 
			
		||||
    /** Finalizes an instance of the MCUInstrumentation class. */
 | 
			
		||||
    virtual ~MCUInstrumentation()
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets elapsed microseconds based on clock frequency.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  start          Start time.
 | 
			
		||||
     * @param  now            Current time.
 | 
			
		||||
     * @param  clockfrequency Clock frequency of the system expressed in MHz.
 | 
			
		||||
     *
 | 
			
		||||
     * @return Elapsed microseconds start and now.
 | 
			
		||||
     */
 | 
			
		||||
    virtual unsigned int getElapsedUS(unsigned int start, unsigned int now, unsigned int clockfrequency) = 0;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets CPU cycles from register.
 | 
			
		||||
     *
 | 
			
		||||
     * @return CPU cycles.
 | 
			
		||||
     */
 | 
			
		||||
    virtual unsigned int getCPUCycles(void) = 0;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Sets MCU activity high.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  active if True, inactive otherwise.
 | 
			
		||||
     */
 | 
			
		||||
    virtual void setMCUActive(bool active)
 | 
			
		||||
    {
 | 
			
		||||
        if (active) // Idle task sched out
 | 
			
		||||
        {
 | 
			
		||||
            uint32_t cc_temp = getCPUCycles() - cc_in;
 | 
			
		||||
            cc_consumed += cc_temp;
 | 
			
		||||
        }
 | 
			
		||||
        else // Idle task sched in
 | 
			
		||||
        {
 | 
			
		||||
            cc_in = getCPUCycles();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets number of consumed clock cycles.
 | 
			
		||||
     *
 | 
			
		||||
     * @return clock cycles.
 | 
			
		||||
     */
 | 
			
		||||
    virtual uint32_t getCCConsumed()
 | 
			
		||||
    {
 | 
			
		||||
        return cc_consumed;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Sets number of consumed clock cycles.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  val number of clock cycles.
 | 
			
		||||
     */
 | 
			
		||||
    virtual void setCCConsumed(uint32_t val)
 | 
			
		||||
    {
 | 
			
		||||
        cc_consumed = val;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    volatile uint32_t cc_consumed; ///< Amount of consumed CPU cycles.
 | 
			
		||||
    volatile uint32_t cc_in;       ///< Current CPU cycles.
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_MCUINSTRUMENTATION_HPP
 | 
			
		||||
@ -0,0 +1,55 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file platform/driver/button/ButtonController.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touchgfx::ButtonController interface class.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_BUTTONCONTROLLER_HPP
 | 
			
		||||
#define TOUCHGFX_BUTTONCONTROLLER_HPP
 | 
			
		||||
 | 
			
		||||
#include <touchgfx/hal/Types.hpp>
 | 
			
		||||
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
/** Interface for sampling external key events. */
 | 
			
		||||
class ButtonController
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    /** Finalizes an instance of the ButtonController class. */
 | 
			
		||||
    virtual ~ButtonController()
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** Initializes button controller. */
 | 
			
		||||
    virtual void init() = 0;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Sample external key events.
 | 
			
		||||
     *
 | 
			
		||||
     * @param [out] key Output parameter that will be set to the key value if a keypress was
 | 
			
		||||
     *                     detected.
 | 
			
		||||
     *
 | 
			
		||||
     * @return True if a keypress was detected and the "key" parameter is set to a value.
 | 
			
		||||
     */
 | 
			
		||||
    virtual bool sample(uint8_t& key) = 0;
 | 
			
		||||
 | 
			
		||||
    /** Resets button controller. Does nothing in the default implementation. */
 | 
			
		||||
    virtual void reset()
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_BUTTONCONTROLLER_HPP
 | 
			
		||||
@ -0,0 +1,77 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file platform/driver/i2c/I2C.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touchfgx::I2C interface class.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_I2C_HPP
 | 
			
		||||
#define TOUCHGFX_I2C_HPP
 | 
			
		||||
 | 
			
		||||
#include <touchgfx/hal/Types.hpp>
 | 
			
		||||
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
/** Platform independent interface for I2C drivers. */
 | 
			
		||||
class I2C
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    /**
 | 
			
		||||
     * Initializes a new instance of the I2C class. Stores the channel of the I2C bus to be
 | 
			
		||||
     * configured.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  ch I2C channel.
 | 
			
		||||
     */
 | 
			
		||||
    I2C(uint8_t ch)
 | 
			
		||||
        : channel(ch)
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** Finalizes an instance of the I2C class. */
 | 
			
		||||
    virtual ~I2C()
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** Initializes the I2C driver. */
 | 
			
		||||
    virtual void init() = 0;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Reads the specified register on the device with the specified address.
 | 
			
		||||
     *
 | 
			
		||||
     * @param       addr The I2C device address.
 | 
			
		||||
     * @param       reg  The register.
 | 
			
		||||
     * @param [out] data Pointer to buffer in which to place the result.
 | 
			
		||||
     * @param       cnt  Size of buffer in bytes.
 | 
			
		||||
     *
 | 
			
		||||
     * @return true on success, false otherwise.
 | 
			
		||||
     */
 | 
			
		||||
    virtual bool readRegister(uint8_t addr, uint8_t reg, uint8_t* data, uint32_t cnt) = 0;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Writes the specified value in a register.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  addr The I2C device address.
 | 
			
		||||
     * @param  reg  The register.
 | 
			
		||||
     * @param  val  The new value.
 | 
			
		||||
     *
 | 
			
		||||
     * @return true on success, false otherwise.
 | 
			
		||||
     */
 | 
			
		||||
    virtual bool writeRegister(uint8_t addr, uint8_t reg, uint8_t val) = 0;
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    uint8_t channel; ///< I2c channel is stored in order to initialize and recover a specific I2C channel
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_I2C_HPP
 | 
			
		||||
@ -0,0 +1,844 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file platform/driver/lcd/LCD16bpp.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touchgfx::LCD16bpp class.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_LCD16BPP_HPP
 | 
			
		||||
#define TOUCHGFX_LCD16BPP_HPP
 | 
			
		||||
 | 
			
		||||
#include <touchgfx/Bitmap.hpp>
 | 
			
		||||
#include <touchgfx/hal/HAL.hpp>
 | 
			
		||||
#include <touchgfx/hal/Types.hpp>
 | 
			
		||||
#include <touchgfx/lcd/LCD.hpp>
 | 
			
		||||
#include <touchgfx/lcd/LCD16DebugPrinter.hpp>
 | 
			
		||||
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
struct GlyphNode;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * This class contains the various low-level drawing routines for drawing bitmaps, texts and
 | 
			
		||||
 * rectangles on 16 bits per pixel displays.
 | 
			
		||||
 *
 | 
			
		||||
 * @see LCD
 | 
			
		||||
 *
 | 
			
		||||
 * @note All coordinates are expected to be in absolute coordinates!
 | 
			
		||||
 */
 | 
			
		||||
class LCD16bpp : public LCD
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    LCD16bpp();
 | 
			
		||||
 | 
			
		||||
    virtual void drawPartialBitmap(const Bitmap& bitmap, int16_t x, int16_t y, const Rect& rect, uint8_t alpha = 255, bool useOptimized = true);
 | 
			
		||||
 | 
			
		||||
    virtual void blitCopy(const uint16_t* sourceData, const Rect& source, const Rect& blitRect, uint8_t alpha, bool hasTransparentPixels);
 | 
			
		||||
 | 
			
		||||
    virtual void blitCopy(const uint8_t* sourceData, Bitmap::BitmapFormat sourceFormat, const Rect& source, const Rect& blitRect, uint8_t alpha, bool hasTransparentPixels);
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t* copyFrameBufferRegionToMemory(const Rect& visRegion, const Rect& absRegion, const BitmapId bitmapId);
 | 
			
		||||
 | 
			
		||||
    virtual Rect copyFrameBufferRegionToMemory(const Rect& visRegion, const Rect& absRegion, uint8_t* dst, int16_t dstWidth, int16_t dstHeight);
 | 
			
		||||
 | 
			
		||||
    virtual void copyAreaFromTFTToClientBuffer(const Rect& region);
 | 
			
		||||
 | 
			
		||||
    virtual void fillRect(const Rect& rect, colortype color, uint8_t alpha = 255);
 | 
			
		||||
 | 
			
		||||
    virtual void fillBuffer(uint8_t* const destination, uint16_t pixelStride, const Rect& rect, const colortype color, const uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t bitDepth() const
 | 
			
		||||
    {
 | 
			
		||||
        return 16;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual Bitmap::BitmapFormat framebufferFormat() const
 | 
			
		||||
    {
 | 
			
		||||
        return Bitmap::RGB565;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t framebufferStride() const
 | 
			
		||||
    {
 | 
			
		||||
        return getFramebufferStride();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Framebuffer stride in bytes. The distance (in bytes) from the start of one
 | 
			
		||||
     * framebuffer row, to the next.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The number of bytes in one framebuffer row.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint16_t getFramebufferStride()
 | 
			
		||||
    {
 | 
			
		||||
        assert(HAL::FRAME_BUFFER_WIDTH > 0 && "HAL has not been initialized yet");
 | 
			
		||||
        return HAL::FRAME_BUFFER_WIDTH * 2;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Generates a color representation to be used on the LCD, based on 24 bit RGB values.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  red   Value of the red part (0-255).
 | 
			
		||||
     * @param  green Value of the green part (0-255).
 | 
			
		||||
     * @param  blue  Value of the blue part (0-255).
 | 
			
		||||
     *
 | 
			
		||||
     * @return The color representation depending on LCD color format.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint16_t getNativeColorFromRGB(uint8_t red, uint8_t green, uint8_t blue)
 | 
			
		||||
    {
 | 
			
		||||
        return ((red << 8) & 0xF800) | ((green << 3) & 0x07E0) | ((blue >> 3) & 0x001F);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Generates a color representation to be used on the LCD, based on 24 bit RGB values.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  color The color.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The color representation depending on LCD color format.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint16_t getNativeColor(colortype color)
 | 
			
		||||
    {
 | 
			
		||||
        return ((color >> 8) & 0xF800) | ((color >> 5) & 0x07E0) | ((color >> 3) & 0x001F);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for all image formats. This allows drawing any image
 | 
			
		||||
     * using Bilinear Interpolation and Nearest Neighbor algorithms, but might use a lot of
 | 
			
		||||
     * memory for the drawing algorithms.
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperAll();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_RGB565 image format. This allows drawing L8_RGB565
 | 
			
		||||
     * images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_RGB565_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperL8_RGB565_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_RGB565();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_RGB565 image format. This allows drawing L8_RGB565
 | 
			
		||||
     * images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_RGB565, enableTextureMapperL8_RGB565_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_RGB565_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_RGB565 image format. This allows drawing L8_RGB565
 | 
			
		||||
     * images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_RGB565, enableTextureMapperL8_RGB565_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_RGB565_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_RGB888 image format. This allows drawing L8_RGB888
 | 
			
		||||
     * images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_RGB888_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperL8_RGB888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_RGB888();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_RGB888 image format. This allows drawing L8_RGB888
 | 
			
		||||
     * images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_RGB888, enableTextureMapperL8_RGB888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_RGB888_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_RGB888 image format. This allows drawing L8_RGB888
 | 
			
		||||
     * images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_RGB888, enableTextureMapperL8_RGB888_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_RGB888_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_ARGB8888 image format. This allows drawing
 | 
			
		||||
     * L8_ARGB8888 images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_ARGB8888_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperL8_ARGB8888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_ARGB8888();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_ARGB8888 image format. This allows drawing
 | 
			
		||||
     * L8_ARGB8888 images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_ARGB8888, enableTextureMapperL8_ARGB8888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_ARGB8888_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_ARGB8888 image format. This allows drawing
 | 
			
		||||
     * L8_ARGB8888 images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_ARGB8888, enableTextureMapperL8_ARGB8888_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_ARGB8888_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for RGB565 image format. This allows drawing RGB565
 | 
			
		||||
     * images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGB565_Opaque_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperRGB565_Opaque_NearestNeighbor,
 | 
			
		||||
     *      enableTextureMapperRGB565_NonOpaque_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperRGB565_NonOpaque_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB565();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for Opaque RGB565 image format. This allows drawing
 | 
			
		||||
     * RGB565 images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGB565
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB565_Opaque_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for NonOpaque RGB565 image format. This allows drawing
 | 
			
		||||
     * RGB565 images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGB565
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB565_NonOpaque_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for Opaque RGB565 image format. This allows drawing
 | 
			
		||||
     * RGB565 images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGB565
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB565_Opaque_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for NonOpaque RGB565 image format. This allows drawing
 | 
			
		||||
     * RGB565 images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGB565
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB565_NonOpaque_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB8888 image format. This allows drawing ARGB8888
 | 
			
		||||
     * images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB8888_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperARGB8888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB8888();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB8888 image format. This allows drawing ARGB8888
 | 
			
		||||
     * images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB8888, enableTextureMapperARGB8888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB8888_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB8888 image format. This allows drawing ARGB8888
 | 
			
		||||
     * images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB8888, enableTextureMapperARGB8888_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB8888_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4_BilinearInterpolation, enableTextureMapperA4_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4, enableTextureMapperA4_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4, enableTextureMapperA4_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    virtual DrawTextureMapScanLineBase* getTextureMapperDrawScanLine(const TextureSurface& texture, RenderingVariant renderVariant, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Find out how much to advance in the display buffer to get to the next pixel.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  rotatedDisplay Is the display running in portrait mode?
 | 
			
		||||
     * @param  textRotation   Rotation to perform.
 | 
			
		||||
     *
 | 
			
		||||
     * @return How much to advance to get to the next pixel.
 | 
			
		||||
     */
 | 
			
		||||
    static int nextPixel(bool rotatedDisplay, TextRotation textRotation);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Find out how much to advance in the display buffer to get to the next line.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  rotatedDisplay Is the display running in portrait mode?
 | 
			
		||||
     * @param  textRotation   Rotation to perform.
 | 
			
		||||
     *
 | 
			
		||||
     * @return How much to advance to get to the next line.
 | 
			
		||||
     */
 | 
			
		||||
    static int nextLine(bool rotatedDisplay, TextRotation textRotation);
 | 
			
		||||
 | 
			
		||||
    virtual void drawGlyph(uint16_t* wbuf16, Rect widgetArea, int16_t x, int16_t y, uint16_t offsetX, uint16_t offsetY, const Rect& invalidatedArea, const GlyphNode* glyph, const uint8_t* glyphData, uint8_t byteAlignRow, colortype color, uint8_t bitsPerPixel, uint8_t alpha, TextRotation rotation);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D source-array to the framebuffer performing alpha-blending per pixel as
 | 
			
		||||
     * specified. If ARGB8888 is not supported by the DMA a software blend is performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData The source-array pointer (points to the beginning of the data). The
 | 
			
		||||
     *                    sourceData must be stored as 32 bits ARGB8888 values.
 | 
			
		||||
     * @param  source     The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect   A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha      The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                    solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyARGB8888(const uint32_t* sourceData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D source-array to the framebuffer never performing alpha-blending per pixel as
 | 
			
		||||
     * because it is assumed that all pixels in the bitmap are solid (i.e. alpha for each pixel is
 | 
			
		||||
     * 255).
 | 
			
		||||
     *
 | 
			
		||||
     * @param   sourceData  The source-array pointer (points to the beginning of the data). The
 | 
			
		||||
     *                      sourceData must be stored as 32 bits ARGB8888 values.
 | 
			
		||||
     * @param   source      The location and dimensions of the source.
 | 
			
		||||
     * @param   blitRect    A rectangle describing what region is to be drawn.
 | 
			
		||||
     */
 | 
			
		||||
    void blitCopyARGB8888Solid(const uint32_t* sourceData, const Rect& source, const Rect& blitRect) const;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D source-array to the framebuffer performing alpha-blending per pixel as specified.
 | 
			
		||||
     * If RGB888 is not supported by the DMA a software blend is performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param   sourceData  The source-array pointer (points to the beginning of the data). The
 | 
			
		||||
     *                      sourceData must be stored as 24 bits RGB888 values.
 | 
			
		||||
     * @param   source      The location and dimensions of the source.
 | 
			
		||||
     * @param   blitRect    A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param   alpha       The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                      solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyRGB888(const uint8_t* sourceData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D indexed 8-bit source to the framebuffer performing alpha-blending per
 | 
			
		||||
     * pixel as specified if indexed format is not supported by the DMA a software blend is
 | 
			
		||||
     * performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData The source-indexes pointer (points to the beginning of the data). The
 | 
			
		||||
     *                    sourceData must be stored as 8- bits indexes.
 | 
			
		||||
     * @param  clutData   The source-clut pointer (points to the beginning of the CLUT color
 | 
			
		||||
     *                    format and size data followed by colors entries.
 | 
			
		||||
     * @param  source     The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect   A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha      The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                    solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyL8(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D indexed 8-bit source to the framebuffer performing alpha-blending per
 | 
			
		||||
     * pixel as specified if L8_ARGB8888 is not supported by the DMA a software blend is
 | 
			
		||||
     * performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData The source-indexes pointer (points to the beginning of the data). The
 | 
			
		||||
     *                    sourceData must be stored as 8- bits indexes.
 | 
			
		||||
     * @param  clutData   The source-clut pointer (points to the beginning of the CLUT color
 | 
			
		||||
     *                    format and size data followed by colors entries stored as 32-
 | 
			
		||||
     *                    bits (ARGB8888) format.
 | 
			
		||||
     * @param  source     The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect   A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha      The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                    solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyL8_ARGB8888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D indexed 8-bit source to the framebuffer performing alpha-blending per
 | 
			
		||||
     * pixel as specified if L8_RGB565 is not supported by the DMA a software blend is
 | 
			
		||||
     * performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData The source-indexes pointer (points to the beginning of the data). The
 | 
			
		||||
     *                    sourceData must be stored as 8- bits indexes.
 | 
			
		||||
     * @param  clutData   The source-clut pointer points to the beginning of the CLUT color
 | 
			
		||||
     *                    format and size data followed by colors entries stored as 16-
 | 
			
		||||
     *                    bits (RGB565) format. If the source have per pixel alpha
 | 
			
		||||
     *                    channel, then alpha channel data will be following the clut
 | 
			
		||||
     *                    entries data.
 | 
			
		||||
     * @param  source     The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect   A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha      The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                    solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyL8_RGB565(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D indexed 8-bit source to the framebuffer performing alpha-blending per
 | 
			
		||||
     * pixel as specified if L8_RGB888 is not supported by the DMA a software blend is
 | 
			
		||||
     * performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData The source-indexes pointer (points to the beginning of the data). The
 | 
			
		||||
     *                    sourceData must be stored as 8- bits indexes.
 | 
			
		||||
     * @param  clutData   The source-clut pointer (points to the beginning of the CLUT color
 | 
			
		||||
     *                    format and size data followed by colors entries stored as 32-
 | 
			
		||||
     *                    bits (ARGB8888) format.
 | 
			
		||||
     * @param  source     The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect   A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha      The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                    solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyL8_RGB888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D source-array to the framebuffer performing alpha-blending per pixel as
 | 
			
		||||
     * specified. Always performs a software blend.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData The source-array pointer (points to the beginning of the data). The
 | 
			
		||||
     *                    sourceData must be stored as 16- bits RGB565 values.
 | 
			
		||||
     * @param  alphaData  The alpha channel array pointer (points to the beginning of the data)
 | 
			
		||||
     * @param  source     The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect   A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha      The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                    solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyAlphaPerPixel(const uint16_t* sourceData, const uint8_t* alphaData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB565_Opaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB565_Opaque_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB565_Opaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB565_Opaque_BilinearInterpolation_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB888_Opaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB888_Opaque_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB888_Opaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB888_Opaque_BilinearInterpolation_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_ARGB8888_NonOpaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_ARGB8888_NonOpaque_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_ARGB8888_NonOpaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_ARGB8888_NonOpaque_BilinearInterpolation_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_NonOpaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_NonOpaque_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_Opaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_Opaque_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_NonOpaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_NonOpaque_BilinearInterpolation_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_Opaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_Opaque_BilinearInterpolation_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ARGB8888_NonOpaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ARGB8888_NonOpaque_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ARGB8888_NonOpaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ARGB8888_NonOpaque_BilinearInterpolation_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_BilinearInterpolation_NoGA;
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t expandRgb565(uint16_t c)
 | 
			
		||||
    {
 | 
			
		||||
        return ((c & 0x07E0) << 16) | (c & ~0x07E0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint16_t compactRgb565(uint32_t c)
 | 
			
		||||
    {
 | 
			
		||||
        return ((c >> 16) & 0x07E0) | (c & ~0x07E0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint16_t bilinearInterpolate565(uint16_t c00, uint16_t c10, uint16_t c01, uint16_t c11, uint8_t x, uint8_t y)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16 && y < 16);
 | 
			
		||||
        uint32_t a00 = expandRgb565(c00);
 | 
			
		||||
        uint32_t a10 = expandRgb565(c10);
 | 
			
		||||
        uint32_t a01 = expandRgb565(c01);
 | 
			
		||||
        uint32_t a11 = expandRgb565(c11);
 | 
			
		||||
 | 
			
		||||
        uint8_t xy = (x * y) >> 3;
 | 
			
		||||
        return compactRgb565((a00 * (32 - 2 * y - 2 * x + xy) + a10 * (2 * x - xy) + a01 * (2 * y - xy) + a11 * xy) >> 5);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint16_t bilinearInterpolate565(uint16_t c00, uint16_t c10, uint8_t x)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16);
 | 
			
		||||
        uint32_t a00 = expandRgb565(c00);
 | 
			
		||||
        uint32_t a10 = expandRgb565(c10);
 | 
			
		||||
 | 
			
		||||
        return compactRgb565((a00 * (32 - 2 * x) + a10 * (2 * x)) >> 5);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t bilinearInterpolate8(uint8_t c00, uint8_t c10, uint8_t x)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16);
 | 
			
		||||
        uint16_t xy10 = 16 * x;
 | 
			
		||||
        uint16_t xy00 = 256 - xy10;
 | 
			
		||||
 | 
			
		||||
        return (c00 * xy00 + c10 * xy10) >> 8;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t bilinearInterpolate8(uint8_t c00, uint8_t c10, uint8_t c01, uint8_t c11, uint8_t x, uint8_t y)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16 && y < 16);
 | 
			
		||||
        uint16_t xy11 = x * y;
 | 
			
		||||
        uint16_t xy10 = 16 * x - xy11;
 | 
			
		||||
        uint16_t xy01 = 16 * y - xy11;
 | 
			
		||||
        uint16_t xy00 = 256 - (xy11 + xy10 + xy01);
 | 
			
		||||
 | 
			
		||||
        return (c00 * xy00 + c10 * xy10 + c01 * xy01 + c11 * xy11) >> 8;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t bilinearInterpolate888(uint32_t c00, uint32_t c10, uint8_t x)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16);
 | 
			
		||||
        uint16_t xy10 = 16 * x;
 | 
			
		||||
        uint16_t xy00 = 256 - xy10;
 | 
			
		||||
 | 
			
		||||
        return ((((c00 & 0xFF00FF) * xy00 + (c10 & 0xFF00FF) * xy10) >> 8) & 0xFF00FF) |
 | 
			
		||||
               ((((c00 & 0x00FF00) * xy00 + (c10 & 0x00FF00) * xy10) >> 8) & 0x00FF00);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t bilinearInterpolate888(uint32_t c00, uint32_t c10, uint32_t c01, uint32_t c11, uint8_t x, uint8_t y)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16 && y < 16);
 | 
			
		||||
        uint16_t xy11 = x * y;
 | 
			
		||||
        uint16_t xy10 = 16 * x - xy11;
 | 
			
		||||
        uint16_t xy01 = 16 * y - xy11;
 | 
			
		||||
        uint16_t xy00 = 256 - (xy11 + xy10 + xy01);
 | 
			
		||||
 | 
			
		||||
        return ((((c00 & 0xFF00FF) * xy00 + (c10 & 0xFF00FF) * xy10 + (c01 & 0xFF00FF) * xy01 + (c11 & 0xFF00FF) * xy11) >> 8) & 0xFF00FF) |
 | 
			
		||||
               ((((c00 & 0x00FF00) * xy00 + (c10 & 0x00FF00) * xy10 + (c01 & 0x00FF00) * xy01 + (c11 & 0x00FF00) * xy11) >> 8) & 0x00FF00);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div255_888(uint32_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        return div255rb((val & 0xFF00FF) * factor) | div255g((val & 0x00FF00) * factor);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div255_888_FFcheck(uint32_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        return factor < 0xFF ? div255_888(val, factor) : val;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div31rb(uint16_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        uint32_t val32 = (val & 0xF81F) * (factor >> 3);
 | 
			
		||||
        return ((val32 + 0x0801 + ((val32 >> 5) & 0xF81F)) >> 5) & 0xF81F;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div31g(uint16_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        uint32_t val32 = (val & 0x07E0) * factor;
 | 
			
		||||
        return ((val32 + 0x0020 + (val32 >> 8)) >> 8) & 0x07E0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div255_565(uint16_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        return div31rb(val, factor) | div31g(val, factor);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div255_565_FFcheck(uint16_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        return factor < 0xFF ? div31rb(val, factor) | div31g(val, factor) : val;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    class DrawTextureMapScanLineBase16 : public DrawTextureMapScanLineBase
 | 
			
		||||
    {
 | 
			
		||||
    protected:
 | 
			
		||||
        FORCE_INLINE_FUNCTION bool overrunCheckNearestNeighbor(uint16_t*& destBits, int& pixelsToDraw, fixed16_16& U, fixed16_16& V, fixed16_16 deltaU, fixed16_16 deltaV, const int16_t maxWidth, const int16_t maxHeight) const;
 | 
			
		||||
        FORCE_INLINE_FUNCTION bool overrunCheckBilinearInterpolation(uint16_t*& destBits, int& pixelsToDraw, fixed16_16& U, fixed16_16& V, fixed16_16 deltaU, fixed16_16 deltaV, const int16_t maxWidth, const int16_t maxHeight) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB565_Opaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t* const textureBits8, const uint16_t* const palette16, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB565_Opaque_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t* const textureBits8, const uint16_t* const palette16, const int16_t bitmapWidth, const int UInt, const int VInt) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB565_Opaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t* const textureBits8, const uint16_t* const palette16, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destBits, const uint8_t* const textureBits8, const uint16_t* const palette16, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB565_Opaque_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t* const textureBits8, const uint16_t* const palette16, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destBits, const uint8_t* const textureBits8, const uint16_t* const palette16, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB888_Opaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t* const textureBits8, const uint8_t* const palette8, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB888_Opaque_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t* const textureBits8, const uint8_t* const palette8, const int16_t bitmapWidth, const int UInt, const int VInt) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB888_Opaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t* const textureBits8, const uint8_t* const palette8, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destBits, const uint8_t* const textureBits8, const uint8_t* const palette8, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB888_Opaque_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t* const textureBits8, const uint8_t* const palette8, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destBits, const uint8_t* const textureBits8, const uint8_t* const palette8, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_ARGB8888_NonOpaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t* const textureBits8, const uint32_t* const palette32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_ARGB8888_NonOpaque_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t* const textureBits8, const uint32_t* const palette32, const int16_t bitmapWidth, const int UInt, const int VInt) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_ARGB8888_NonOpaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t* const textureBits8, const uint32_t* const palette32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destBits, const uint8_t* const textureBits8, const uint32_t* const palette32, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_ARGB8888_NonOpaque_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t* const textureBits8, const uint32_t* const palette32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destBits, const uint8_t* const textureBits8, const uint32_t* const palette32, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_NonOpaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint16_t* const textureBits, const uint8_t* const alphaBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_NonOpaque_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint16_t* const textureBits, const uint8_t* alphaBits, const int16_t bitmapWidth, const int UInt, const int VInt) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_Opaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_Opaque_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_NonOpaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint16_t* const textureBits, const uint8_t* const alphaBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destBits, const uint16_t* const textureBits, const uint8_t* const alphaBits, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_NonOpaque_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t* const alphaBits, const uint16_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destBits, const uint8_t* const alphaBits, const uint16_t* const textureBits, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_Opaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_Opaque_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ARGB8888_NonOpaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ARGB8888_NonOpaque_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int UInt, const int VInt) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ARGB8888_NonOpaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ARGB8888_NonOpaque_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_NearestNeighbor_GA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t a4, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t a) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_BilinearInterpolation_GA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint16_t* const textureBits, const uint32_t offset, const int16_t bitmapStride, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint16_t* const textureBits, const uint32_t offset, const int16_t bitmapStride, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_LCD16BPP_HPP
 | 
			
		||||
@ -0,0 +1,819 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file platform/driver/lcd/LCD16bppSerialFlash.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touchgfx::LCD16bppSerialFlash class.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_LCD16BPPSERIALFLASH_HPP
 | 
			
		||||
#define TOUCHGFX_LCD16BPPSERIALFLASH_HPP
 | 
			
		||||
 | 
			
		||||
#include <touchgfx/Bitmap.hpp>
 | 
			
		||||
#include <touchgfx/hal/FlashDataReader.hpp>
 | 
			
		||||
#include <touchgfx/hal/HAL.hpp>
 | 
			
		||||
#include <touchgfx/hal/Types.hpp>
 | 
			
		||||
#include <touchgfx/lcd/LCD.hpp>
 | 
			
		||||
#include <touchgfx/lcd/LCD16DebugPrinter.hpp>
 | 
			
		||||
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
/**
 | 
			
		||||
 * This class contains the various low-level drawing routines for drawing bitmaps, texts and
 | 
			
		||||
 * rectangles on 16 bits per pixel displays.
 | 
			
		||||
 *
 | 
			
		||||
 * @see LCD
 | 
			
		||||
 *
 | 
			
		||||
 * @note All coordinates are expected to be in absolute coordinates!
 | 
			
		||||
 */
 | 
			
		||||
class LCD16bppSerialFlash : public LCD
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    /**
 | 
			
		||||
     * Creates a LCD16bppSerialFlash object. The FlashDataReader object is used to fetch
 | 
			
		||||
     * data from the external flash.
 | 
			
		||||
     *
 | 
			
		||||
     * @param [in] flashReader Reference to a FlashDataReader object.
 | 
			
		||||
     */
 | 
			
		||||
    LCD16bppSerialFlash(FlashDataReader& flashReader);
 | 
			
		||||
 | 
			
		||||
    virtual void drawPartialBitmap(const Bitmap& bitmap, int16_t x, int16_t y, const Rect& rect, uint8_t alpha = 255, bool useOptimized = true);
 | 
			
		||||
 | 
			
		||||
    virtual void blitCopy(const uint16_t* sourceData, const Rect& source, const Rect& blitRect, uint8_t alpha, bool hasTransparentPixels);
 | 
			
		||||
 | 
			
		||||
    virtual void blitCopy(const uint8_t* sourceData, Bitmap::BitmapFormat sourceFormat, const Rect& source, const Rect& blitRect, uint8_t alpha, bool hasTransparentPixels);
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t* copyFrameBufferRegionToMemory(const Rect& visRegion, const Rect& absRegion, const BitmapId bitmapId);
 | 
			
		||||
 | 
			
		||||
    virtual Rect copyFrameBufferRegionToMemory(const Rect& visRegion, const Rect& absRegion, uint8_t* dst, int16_t dstWidth, int16_t dstHeight);
 | 
			
		||||
 | 
			
		||||
    virtual void copyAreaFromTFTToClientBuffer(const Rect& region);
 | 
			
		||||
 | 
			
		||||
    virtual void fillRect(const Rect& rect, colortype color, uint8_t alpha = 255);
 | 
			
		||||
 | 
			
		||||
    virtual void fillBuffer(uint8_t* const destination, uint16_t pixelStride, const Rect& rect, const colortype color, const uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t bitDepth() const
 | 
			
		||||
    {
 | 
			
		||||
        return 16;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual Bitmap::BitmapFormat framebufferFormat() const
 | 
			
		||||
    {
 | 
			
		||||
        return Bitmap::RGB565;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t framebufferStride() const
 | 
			
		||||
    {
 | 
			
		||||
        return getFramebufferStride();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Framebuffer stride in bytes. The distance (in bytes) from the start of one
 | 
			
		||||
     * framebuffer row, to the next.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The number of bytes in one framebuffer row.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint16_t getFramebufferStride()
 | 
			
		||||
    {
 | 
			
		||||
        assert(HAL::FRAME_BUFFER_WIDTH > 0 && "HAL has not been initialized yet");
 | 
			
		||||
        return HAL::FRAME_BUFFER_WIDTH * 2;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Generates a color representation to be used on the LCD, based on 24 bit RGB values.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  red   Value of the red part (0-255).
 | 
			
		||||
     * @param  green Value of the green part (0-255).
 | 
			
		||||
     * @param  blue  Value of the blue part (0-255).
 | 
			
		||||
     *
 | 
			
		||||
     * @return The color representation depending on LCD color format.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint16_t getNativeColorFromRGB(uint8_t red, uint8_t green, uint8_t blue)
 | 
			
		||||
    {
 | 
			
		||||
        return ((red << 8) & 0xF800) | ((green << 3) & 0x07E0) | ((blue >> 3) & 0x001F);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Generates a color representation to be used on the LCD, based on 24 bit RGB values.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  color The color.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The color representation depending on LCD color format.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint16_t getNativeColor(colortype color)
 | 
			
		||||
    {
 | 
			
		||||
        return ((color >> 8) & 0xF800) | ((color >> 5) & 0x07E0) | ((color >> 3) & 0x001F);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for all image formats. This allows drawing any image
 | 
			
		||||
     * using Bilinear Interpolation and Nearest Neighbor algorithms, but might use a lot of
 | 
			
		||||
     * memory for the drawing algorithms.
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperAll();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_RGB565 image format. This allows drawing L8_RGB565
 | 
			
		||||
     * images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_RGB565_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperL8_RGB565_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_RGB565();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_RGB565 image format. This allows drawing L8_RGB565
 | 
			
		||||
     * images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_RGB565, enableTextureMapperL8_RGB565_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_RGB565_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_RGB565 image format. This allows drawing L8_RGB565
 | 
			
		||||
     * images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_RGB565, enableTextureMapperL8_RGB565_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_RGB565_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_RGB888 image format. This allows drawing L8_RGB888
 | 
			
		||||
     * images using Bilinear Interpolation and NearestNeighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_RGB888_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperL8_RGB888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_RGB888();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_RGB888 image format. This allows drawing L8_RGB888
 | 
			
		||||
     * images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_RGB888, enableTextureMapperL8_RGB888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_RGB888_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_RGB888 image format. This allows drawing L8_RGB888
 | 
			
		||||
     * images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_RGB888, enableTextureMapperL8_RGB888_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_RGB888_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_ARGB8888 image format. This allows drawing
 | 
			
		||||
     * L8_ARGB8888 images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_ARGB8888_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperL8_ARGB8888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_ARGB8888();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_ARGB8888 image format. This allows drawing
 | 
			
		||||
     * L8_ARGB8888 images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_ARGB8888, enableTextureMapperL8_ARGB8888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_ARGB8888_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_ARGB8888 image format. This allows drawing
 | 
			
		||||
     * L8_ARGB8888 images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_ARGB8888, enableTextureMapperL8_ARGB8888_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_ARGB8888_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for RGB565 image format. This allows drawing RGB565
 | 
			
		||||
     * images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGB565_Opaque_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperRGB565_Opaque_NearestNeighbor,
 | 
			
		||||
     *      enableTextureMapperRGB565_NonOpaque_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperRGB565_NonOpaque_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB565();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for Opaque RGB565 image format. This allows drawing
 | 
			
		||||
     * RGB565 images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGB565
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB565_Opaque_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for NonOpaque RGB565 image format. This allows drawing
 | 
			
		||||
     * RGB565 images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGB565
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB565_NonOpaque_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for Opaque RGB565 image format. This allows drawing
 | 
			
		||||
     * RGB565 images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGB565
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB565_Opaque_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for NonOpaque RGB565 image format. This allows drawing
 | 
			
		||||
     * RGB565 images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGB565
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB565_NonOpaque_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB8888 image format. This allows drawing ARGB8888
 | 
			
		||||
     * images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB8888_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperARGB8888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB8888();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB8888 image format. This allows drawing ARGB8888
 | 
			
		||||
     * images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB8888, enableTextureMapperARGB8888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB8888_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB8888 image format. This allows drawing ARGB8888
 | 
			
		||||
     * images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB8888, enableTextureMapperARGB8888_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB8888_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4_BilinearInterpolation, enableTextureMapperA4_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4, enableTextureMapperA4_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4, enableTextureMapperA4_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    virtual DrawTextureMapScanLineBase* getTextureMapperDrawScanLine(const TextureSurface& texture, RenderingVariant renderVariant, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    FlashDataReader& flashReader; ///< Flash reader. Used by routines to read pixel data from the flash.
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Find out how much to advance in the display buffer to get to the next pixel.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  rotatedDisplay Is the display running in portrait mode?
 | 
			
		||||
     * @param  textRotation   Rotation to perform.
 | 
			
		||||
     *
 | 
			
		||||
     * @return How much to advance to get to the next pixel.
 | 
			
		||||
     */
 | 
			
		||||
    static int nextPixel(bool rotatedDisplay, TextRotation textRotation);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Find out how much to advance in the display buffer to get to the next line.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  rotatedDisplay Is the display running in portrait mode?
 | 
			
		||||
     * @param  textRotation   Rotation to perform.
 | 
			
		||||
     *
 | 
			
		||||
     * @return How much to advance to get to the next line.
 | 
			
		||||
     */
 | 
			
		||||
    static int nextLine(bool rotatedDisplay, TextRotation textRotation);
 | 
			
		||||
 | 
			
		||||
    virtual void drawGlyph(uint16_t* wbuf16, Rect widgetArea, int16_t x, int16_t y, uint16_t offsetX, uint16_t offsetY, const Rect& invalidatedArea, const GlyphNode* glyph, const uint8_t* glyphData, uint8_t byteAlignRow, colortype color, uint8_t bitsPerPixel, uint8_t alpha, TextRotation rotation);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D source-array to the framebuffer performing alpha-blending per pixel as specified.
 | 
			
		||||
     *
 | 
			
		||||
     * @param   sourceData  The source-array pointer (points to the beginning of the data). The
 | 
			
		||||
     *                      sourceData must be stored as 32 bits ARGB8888 values.
 | 
			
		||||
     * @param   source      The location and dimensions of the source.
 | 
			
		||||
     * @param   blitRect    A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param   alpha       The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                      solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    void blitCopyARGB8888(const uint32_t* sourceData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D source-array to the framebuffer never performing alpha-blending per pixel as
 | 
			
		||||
     * because it is assumed that all pixels in the bitmap are solid (i.e. alpha for each pixel is
 | 
			
		||||
     * 255).
 | 
			
		||||
     *
 | 
			
		||||
     * @param   sourceData  The source-array pointer (points to the beginning of the data). The
 | 
			
		||||
     *                      sourceData must be stored as 32 bits ARGB8888 values.
 | 
			
		||||
     * @param   source      The location and dimensions of the source.
 | 
			
		||||
     * @param   blitRect    A rectangle describing what region is to be drawn.
 | 
			
		||||
     */
 | 
			
		||||
    void blitCopyARGB8888Solid(const uint32_t* sourceData, const Rect& source, const Rect& blitRect);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D source-array to the framebuffer performing alpha-blending per pixel as specified.
 | 
			
		||||
     * If ARGB8888 is not supported by the DMA a software blend is performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param   sourceData  The source-array pointer (points to the beginning of the data). The
 | 
			
		||||
     *                      sourceData must be stored as 24 bits ARGB8888 values.
 | 
			
		||||
     * @param   source      The location and dimensions of the source.
 | 
			
		||||
     * @param   blitRect    A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param   alpha       The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                      solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    void blitCopyRGB888(const uint8_t* sourceData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D indexed 8-bit source to the framebuffer performing alpha-blending per
 | 
			
		||||
     * pixel as specified if indexed format is not supported by the DMA a software blend is
 | 
			
		||||
     * performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData The source-indexes pointer (points to the beginning of the data). The
 | 
			
		||||
     *                    sourceData must be stored as 8- bits indexes.
 | 
			
		||||
     * @param  clutData   The source-clut pointer (points to the beginning of the CLUT color
 | 
			
		||||
     *                    format and size data followed by colors entries.
 | 
			
		||||
     * @param  source     The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect   A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha      The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                    solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    void blitCopyL8(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D indexed 8-bit source to the framebuffer performing alpha-blending per
 | 
			
		||||
     * pixel as specified if L8_ARGB8888 is not supported by the DMA a software blend is
 | 
			
		||||
     * performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData The source-indexes pointer (points to the beginning of the data). The
 | 
			
		||||
     *                    sourceData must be stored as 8- bits indexes.
 | 
			
		||||
     * @param  clutData   The source-clut pointer (points to the beginning of the CLUT color
 | 
			
		||||
     *                    format and size data followed by colors entries stored as 32-
 | 
			
		||||
     *                    bits (ARGB8888) format.
 | 
			
		||||
     * @param  source     The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect   A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha      The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                    solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    void blitCopyL8_ARGB8888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D indexed 8-bit source to the framebuffer performing alpha-blending per
 | 
			
		||||
     * pixel as specified if L8_RGB565 is not supported by the DMA a software blend is
 | 
			
		||||
     * performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData The source-indexes pointer (points to the beginning of the data). The
 | 
			
		||||
     *                    sourceData must be stored as 8- bits indexes.
 | 
			
		||||
     * @param  clutData   The source-clut pointer points to the beginning of the CLUT color
 | 
			
		||||
     *                    format and size data followed by colors entries stored as 16-
 | 
			
		||||
     *                    bits (RGB565) format. If the source have per pixel alpha
 | 
			
		||||
     *                    channel, then alpha channel data will be following the clut
 | 
			
		||||
     *                    entries data.
 | 
			
		||||
     * @param  source     The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect   A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha      The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                    solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    void blitCopyL8_RGB565(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB565_Opaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB565_Opaque_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB565_Opaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB565_Opaque_BilinearInterpolation_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB888_Opaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB888_Opaque_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB888_Opaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB888_Opaque_BilinearInterpolation_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_ARGB8888_NonOpaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_ARGB8888_NonOpaque_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_ARGB8888_NonOpaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_ARGB8888_NonOpaque_BilinearInterpolation_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_NonOpaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_NonOpaque_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_Opaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_Opaque_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_NonOpaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_NonOpaque_BilinearInterpolation_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_Opaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_Opaque_BilinearInterpolation_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ARGB8888_NonOpaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ARGB8888_NonOpaque_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ARGB8888_NonOpaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ARGB8888_NonOpaque_BilinearInterpolation_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_BilinearInterpolation_NoGA;
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t expandRgb565(uint16_t c)
 | 
			
		||||
    {
 | 
			
		||||
        return ((c & 0x07E0) << 16) | (c & ~0x07E0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint16_t compactRgb565(uint32_t c)
 | 
			
		||||
    {
 | 
			
		||||
        return ((c >> 16) & 0x07E0) | (c & ~0x07E0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint16_t bilinearInterpolate565(uint16_t c00, uint16_t c10, uint16_t c01, uint16_t c11, uint8_t x, uint8_t y)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16 && y < 16);
 | 
			
		||||
        uint32_t a00 = expandRgb565(c00);
 | 
			
		||||
        uint32_t a10 = expandRgb565(c10);
 | 
			
		||||
        uint32_t a01 = expandRgb565(c01);
 | 
			
		||||
        uint32_t a11 = expandRgb565(c11);
 | 
			
		||||
 | 
			
		||||
        uint8_t xy = (x * y) >> 3;
 | 
			
		||||
        return compactRgb565((a00 * (32 - 2 * y - 2 * x + xy) + a10 * (2 * x - xy) + a01 * (2 * y - xy) + a11 * xy) >> 5);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint16_t bilinearInterpolate565(uint16_t c00, uint16_t c10, uint8_t x)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16);
 | 
			
		||||
        uint32_t a00 = expandRgb565(c00);
 | 
			
		||||
        uint32_t a10 = expandRgb565(c10);
 | 
			
		||||
 | 
			
		||||
        return compactRgb565((a00 * (32 - 2 * x) + a10 * (2 * x)) >> 5);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t bilinearInterpolate8(uint8_t c00, uint8_t c10, uint8_t x)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16);
 | 
			
		||||
        uint16_t xy10 = 16 * x;
 | 
			
		||||
        uint16_t xy00 = 256 - xy10;
 | 
			
		||||
 | 
			
		||||
        return (c00 * xy00 + c10 * xy10) >> 8;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t bilinearInterpolate8(uint8_t c00, uint8_t c10, uint8_t c01, uint8_t c11, uint8_t x, uint8_t y)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16 && y < 16);
 | 
			
		||||
        uint16_t xy11 = x * y;
 | 
			
		||||
        uint16_t xy10 = 16 * x - xy11;
 | 
			
		||||
        uint16_t xy01 = 16 * y - xy11;
 | 
			
		||||
        uint16_t xy00 = 256 - (xy11 + xy10 + xy01);
 | 
			
		||||
 | 
			
		||||
        return (c00 * xy00 + c10 * xy10 + c01 * xy01 + c11 * xy11) >> 8;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t bilinearInterpolate888(uint32_t c00, uint32_t c10, uint8_t x)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16);
 | 
			
		||||
        uint16_t xy10 = 16 * x;
 | 
			
		||||
        uint16_t xy00 = 256 - xy10;
 | 
			
		||||
 | 
			
		||||
        return ((((c00 & 0xFF00FF) * xy00 + (c10 & 0xFF00FF) * xy10) >> 8) & 0xFF00FF) |
 | 
			
		||||
               ((((c00 & 0x00FF00) * xy00 + (c10 & 0x00FF00) * xy10) >> 8) & 0x00FF00);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t bilinearInterpolate888(uint32_t c00, uint32_t c10, uint32_t c01, uint32_t c11, uint8_t x, uint8_t y)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16 && y < 16);
 | 
			
		||||
        uint16_t xy11 = x * y;
 | 
			
		||||
        uint16_t xy10 = 16 * x - xy11;
 | 
			
		||||
        uint16_t xy01 = 16 * y - xy11;
 | 
			
		||||
        uint16_t xy00 = 256 - (xy11 + xy10 + xy01);
 | 
			
		||||
 | 
			
		||||
        return ((((c00 & 0xFF00FF) * xy00 + (c10 & 0xFF00FF) * xy10 + (c01 & 0xFF00FF) * xy01 + (c11 & 0xFF00FF) * xy11) >> 8) & 0xFF00FF) |
 | 
			
		||||
               ((((c00 & 0x00FF00) * xy00 + (c10 & 0x00FF00) * xy10 + (c01 & 0x00FF00) * xy01 + (c11 & 0x00FF00) * xy11) >> 8) & 0x00FF00);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div255_888(uint32_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        return div255rb((val & 0xFF00FF) * factor) | div255g((val & 0x00FF00) * factor);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div255_888_FFcheck(uint32_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        return factor < 0xFF ? div255_888(val, factor) : val;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div31rb(uint16_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        uint32_t val32 = (val & 0xF81F) * (factor >> 3);
 | 
			
		||||
        return ((val32 + 0x0801 + ((val32 >> 5) & 0xF81F)) >> 5) & 0xF81F;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div31g(uint16_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        uint32_t val32 = (val & 0x07E0) * factor;
 | 
			
		||||
        return ((val32 + 0x0020 + (val32 >> 8)) >> 8) & 0x07E0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div255_565(uint16_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        return div31rb(val, factor) | div31g(val, factor);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div255_565_FFcheck(uint16_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        return factor < 0xFF ? div31rb(val, factor) | div31g(val, factor) : val;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    class DrawTextureMapScanLineBase16 : public DrawTextureMapScanLineBase
 | 
			
		||||
    {
 | 
			
		||||
    protected:
 | 
			
		||||
        FORCE_INLINE_FUNCTION bool overrunCheckNearestNeighbor(uint16_t*& destBits, int& pixelsToDraw, fixed16_16& U, fixed16_16& V, fixed16_16 deltaU, fixed16_16 deltaV, const int16_t maxWidth, const int16_t maxHeight) const;
 | 
			
		||||
        FORCE_INLINE_FUNCTION bool overrunCheckBilinearInterpolation(uint16_t*& destBits, int& pixelsToDraw, fixed16_16& U, fixed16_16& V, fixed16_16 deltaU, fixed16_16 deltaV, const int16_t maxWidth, const int16_t maxHeight) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB565_Opaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t* const textureBits8, const uint16_t* const palette16, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB565_Opaque_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t* const textureBits8, const uint16_t* const palette16, const int16_t bitmapWidth, const int UInt, const int VInt) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB565_Opaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t* const textureBits8, const uint16_t* const palette16, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destBits, const uint8_t* const textureBits8, const uint16_t* const palette16, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB565_Opaque_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t* const textureBits8, const uint16_t* const palette16, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destBits, const uint8_t* const textureBits8, const uint16_t* const palette16, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB888_Opaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t* const textureBits8, const uint8_t* const palette8, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB888_Opaque_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t* const textureBits8, const uint8_t* const palette8, const int16_t bitmapWidth, const int UInt, const int VInt) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB888_Opaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t* const textureBits8, const uint8_t* const palette8, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destBits, const uint8_t* const textureBits8, const uint8_t* const palette8, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB888_Opaque_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t* const textureBits8, const uint8_t* const palette8, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destBits, const uint8_t* const textureBits8, const uint8_t* const palette8, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_ARGB8888_NonOpaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t* const textureBits8, const uint32_t* const palette32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_ARGB8888_NonOpaque_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t* const textureBits8, const uint32_t* const palette32, const int16_t bitmapWidth, const int UInt, const int VInt) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_ARGB8888_NonOpaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t* const textureBits8, const uint32_t* const palette32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destBits, const uint8_t* const textureBits8, const uint32_t* const palette32, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_ARGB8888_NonOpaque_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t* const textureBits8, const uint32_t* const palette32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destBits, const uint8_t* const textureBits8, const uint32_t* const palette32, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_NonOpaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint16_t* const textureBits, const uint8_t* const alphaBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_NonOpaque_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint16_t* const textureBits, const uint8_t* alphaBits, const int16_t bitmapWidth, const int UInt, const int VInt) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_Opaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_Opaque_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_NonOpaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint16_t* const textureBits, const uint8_t* const alphaBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destBits, const uint16_t* const textureBits, const uint8_t* const alphaBits, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_NonOpaque_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t* const alphaBits, const uint16_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destBits, const uint8_t* const alphaBits, const uint16_t* const textureBits, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_Opaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_Opaque_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ARGB8888_NonOpaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ARGB8888_NonOpaque_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int UInt, const int VInt) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ARGB8888_NonOpaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ARGB8888_NonOpaque_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_NearestNeighbor_GA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t a4, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint8_t a) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_BilinearInterpolation_GA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint16_t* const textureBits, const uint32_t offset, const int16_t bitmapWidth, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase16
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint16_t* const textureBits, const uint32_t offset, const int16_t bitmapWidth, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_LCD16BPPSERIALFLASH_HPP
 | 
			
		||||
@ -0,0 +1,291 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file platform/driver/lcd/LCD1bpp.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touchfgx::LCD1bpp class.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_LCD1BPP_HPP
 | 
			
		||||
#define TOUCHGFX_LCD1BPP_HPP
 | 
			
		||||
 | 
			
		||||
#include <touchgfx/Bitmap.hpp>
 | 
			
		||||
#include <touchgfx/Color.hpp>
 | 
			
		||||
#include <touchgfx/hal/HAL.hpp>
 | 
			
		||||
#include <touchgfx/hal/Types.hpp>
 | 
			
		||||
#include <touchgfx/lcd/LCD.hpp>
 | 
			
		||||
#include <touchgfx/lcd/LCD1DebugPrinter.hpp>
 | 
			
		||||
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
struct GlyphNode;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * This class contains the various low-level drawing routines for drawing bitmaps, texts and
 | 
			
		||||
 * rectangles on 1 bits per pixel displays.
 | 
			
		||||
 *
 | 
			
		||||
 * @see LCD
 | 
			
		||||
 *
 | 
			
		||||
 * @note All coordinates are expected to be in absolute coordinates!
 | 
			
		||||
 */
 | 
			
		||||
class LCD1bpp : public LCD
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    virtual void drawPartialBitmap(const Bitmap& bitmap, int16_t x, int16_t y, const Rect& rect, uint8_t alpha = 255, bool useOptimized = true);
 | 
			
		||||
 | 
			
		||||
    virtual void blitCopy(const uint16_t* sourceData, const Rect& source, const Rect& blitRect, uint8_t alpha, bool hasTransparentPixels);
 | 
			
		||||
 | 
			
		||||
    virtual void blitCopy(const uint8_t* sourceData, Bitmap::BitmapFormat sourceFormat, const Rect& source, const Rect& blitRect, uint8_t alpha, bool hasTransparentPixels);
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t* copyFrameBufferRegionToMemory(const Rect& visRegion, const Rect& absRegion, const BitmapId bitmapId);
 | 
			
		||||
 | 
			
		||||
    virtual Rect copyFrameBufferRegionToMemory(const Rect& visRegion, const Rect& absRegion, uint8_t* dst, int16_t dstWidth, int16_t dstHeight);
 | 
			
		||||
 | 
			
		||||
    virtual void copyAreaFromTFTToClientBuffer(const Rect& region);
 | 
			
		||||
 | 
			
		||||
    virtual void fillRect(const Rect& rect, colortype color, uint8_t alpha = 255);
 | 
			
		||||
 | 
			
		||||
    virtual void fillBuffer(uint8_t* const destination, uint16_t pixelStride, const Rect& rect, const colortype color, const uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t bitDepth() const
 | 
			
		||||
    {
 | 
			
		||||
        return 1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual Bitmap::BitmapFormat framebufferFormat() const
 | 
			
		||||
    {
 | 
			
		||||
        return Bitmap::BW;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t framebufferStride() const
 | 
			
		||||
    {
 | 
			
		||||
        return getFramebufferStride();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Framebuffer stride in bytes. The distance (in bytes) from the start of one
 | 
			
		||||
     * framebuffer row, to the next.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The number of bytes in one framebuffer row.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint16_t getFramebufferStride()
 | 
			
		||||
    {
 | 
			
		||||
        assert(HAL::FRAME_BUFFER_WIDTH > 0 && "HAL has not been initialized yet");
 | 
			
		||||
        return (HAL::FRAME_BUFFER_WIDTH + 7) / 8;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Generates a color representation to be used on the LCD, based on 24 bit RGB values.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  red   Value of the red part (0-255).
 | 
			
		||||
     * @param  green Value of the green part (0-255).
 | 
			
		||||
     * @param  blue  Value of the blue part (0-255).
 | 
			
		||||
     *
 | 
			
		||||
     * @return The color representation depending on LCD color format.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getNativeColorFromRGB(uint8_t red, uint8_t green, uint8_t blue)
 | 
			
		||||
    {
 | 
			
		||||
        // Find the GRAY value (http://en.wikipedia.org/wiki/Luma_%28video%29) rounded to nearest integer
 | 
			
		||||
        return (red * 54 + green * 183 + blue * 19) >> 15;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Generates a color representation to be used on the LCD, based on 24 bit RGB values.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  color The color.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The color representation depending on LCD color format.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getNativeColor(colortype color)
 | 
			
		||||
    {
 | 
			
		||||
        return getNativeColorFromRGB(Color::getRed(color), Color::getGreen(color), Color::getBlue(color));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for all image formats. Currently texture mapping is not
 | 
			
		||||
     * supported on 1bpp displays, so this function does not do anything. It is merely
 | 
			
		||||
     * included to allow function enableTextureMapperAll() to be called on any subclass of
 | 
			
		||||
     * LCD.
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperAll() const;
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    virtual void drawTextureMapScanLine(const DrawingSurface& /*dest*/, const Gradients& /*gradients*/, const Edge* /*leftEdge*/, const Edge* /*rightEdge*/, const TextureSurface& /*texture*/, const Rect& /*absoluteRect*/, const Rect& /*dirtyAreaAbsolute*/, RenderingVariant /*renderVariant*/, uint8_t /*alpha*/, uint16_t /*subDivisionSize*/)
 | 
			
		||||
    {
 | 
			
		||||
        assert(false && "Texture mapping not supported for 1bpp");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Find out how much to advance in the display buffer to get to the next pixel.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  rotatedDisplay Is the display running in portrait mode?
 | 
			
		||||
     * @param  textRotation   Rotation to perform.
 | 
			
		||||
     *
 | 
			
		||||
     * @return How much to advance to get to the next pixel.
 | 
			
		||||
     */
 | 
			
		||||
    static int nextPixel(bool rotatedDisplay, TextRotation textRotation);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Find out how much to advance in the display buffer to get to the next line.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  rotatedDisplay Is the display running in portrait mode?
 | 
			
		||||
     * @param  textRotation   Rotation to perform.
 | 
			
		||||
     *
 | 
			
		||||
     * @return How much to advance to get to the next line.
 | 
			
		||||
     */
 | 
			
		||||
    static int nextLine(bool rotatedDisplay, TextRotation textRotation);
 | 
			
		||||
 | 
			
		||||
    virtual void drawGlyph(uint16_t* wbuf16, Rect widgetArea, int16_t x, int16_t y, uint16_t offsetX, uint16_t offsetY, const Rect& invalidatedArea, const GlyphNode* glyph, const uint8_t* glyphData, uint8_t byteAlignRow, colortype color, uint8_t bitsPerPixel, uint8_t alpha, TextRotation rotation);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Fill memory efficiently. Try to get 32bit aligned or 16bit aligned and then copy as
 | 
			
		||||
     * quickly as possible.
 | 
			
		||||
     *
 | 
			
		||||
     * @param [out] dst         Pointer to memory to fill.
 | 
			
		||||
     * @param       color       Color to write to memory, either 0 => 0x00000000 or 1 =>
 | 
			
		||||
     *                          0xFFFFFFFF.
 | 
			
		||||
     * @param       bytesToFill Number of bytes to fill.
 | 
			
		||||
     */
 | 
			
		||||
    static void fillMemory(void* RESTRICT dst, colortype color, uint16_t bytesToFill);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a run-length encoded2D source-array to the framebuffer if alpha > zero.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  _sourceData The source-array pointer (points to the beginning of the data). Data
 | 
			
		||||
     *                     stored in RLE format, where each byte indicates number of
 | 
			
		||||
     *                     pixels with certain color, alternating between black and
 | 
			
		||||
     *                     white. First byte represents black.
 | 
			
		||||
     * @param  source      The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect    A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha       The alpha value to use for blending (0 = invisible, otherwise solid).
 | 
			
		||||
     */
 | 
			
		||||
    virtual void blitCopyRLE(const uint16_t* _sourceData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Copies a rectangular area from the framebuffer til a givene memory address, which is
 | 
			
		||||
     * typically in the animation storage or a dynamic bitmap.
 | 
			
		||||
     *
 | 
			
		||||
     * @param      srcAddress     Source address (byte address).
 | 
			
		||||
     * @param      srcStride      Source stride (number of bytes to advance to next line).
 | 
			
		||||
     * @param      srcPixelOffset Source pixel offset (first pixel in first source byte).
 | 
			
		||||
     * @param [in] dstAddress     If destination address (byte address).
 | 
			
		||||
     * @param      dstStride      Destination stride (number of bytes to advance to next line).
 | 
			
		||||
     * @param      dstPixelOffset Destination pixel offset (first pixel in destination byte).
 | 
			
		||||
     * @param      width          The width of area (in pixels).
 | 
			
		||||
     * @param      height         The height of area (in pixels).
 | 
			
		||||
     */
 | 
			
		||||
    void copyRect(const uint8_t* srcAddress, int16_t srcStride, uint8_t srcPixelOffset, uint8_t* RESTRICT dstAddress, int16_t dstStride, uint8_t dstPixelOffset, int16_t width, int16_t height) const;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    class bwRLEdata
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        bwRLEdata(const uint8_t* src = 0)
 | 
			
		||||
            : data(src), thisHalfByte(0), nextHalfByte(0), rleByte(0), firstHalfByte(true), color(0), length(0)
 | 
			
		||||
        {
 | 
			
		||||
            init(src);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        void init(const uint8_t* src)
 | 
			
		||||
        {
 | 
			
		||||
            data = src;
 | 
			
		||||
            rleByte = 0;
 | 
			
		||||
            firstHalfByte = true;
 | 
			
		||||
            color = ~0; // Will be flipped to 0 by first call to getNextLength() below
 | 
			
		||||
            if (src)
 | 
			
		||||
            {
 | 
			
		||||
                // Read two half-bytes ahead
 | 
			
		||||
                thisHalfByte = getNextHalfByte();
 | 
			
		||||
                nextHalfByte = getNextHalfByte();
 | 
			
		||||
                getNextLength();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        void skipNext(int32_t skip)
 | 
			
		||||
        {
 | 
			
		||||
            for (;;)
 | 
			
		||||
            {
 | 
			
		||||
                if (length > skip) // Is the current length enough?
 | 
			
		||||
                {
 | 
			
		||||
                    length -= skip; // Reduce the length
 | 
			
		||||
                    skip = 0;       // No more to skip
 | 
			
		||||
                    break;          // Done!
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    skip -= length;  // Skip the entire run
 | 
			
		||||
                    getNextLength(); // Swap colors and Read length of next run
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        uint8_t getColor() const
 | 
			
		||||
        {
 | 
			
		||||
            return color;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        int32_t getLength() const
 | 
			
		||||
        {
 | 
			
		||||
            return length;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        void getNextLength()
 | 
			
		||||
        {
 | 
			
		||||
            length = thisHalfByte; // Length is the next byte
 | 
			
		||||
            // Update read ahead buffer
 | 
			
		||||
            thisHalfByte = nextHalfByte;
 | 
			
		||||
            nextHalfByte = getNextHalfByte();
 | 
			
		||||
            color = ~color; // Update the color of next run
 | 
			
		||||
            // If number after 'length' is 0
 | 
			
		||||
            while (thisHalfByte == 0)
 | 
			
		||||
            {
 | 
			
		||||
                length <<= 4;           // Multiply length by 16 and
 | 
			
		||||
                length += nextHalfByte; // add the number after 0
 | 
			
		||||
                // We have used the next two half bytes, read two new ones
 | 
			
		||||
                thisHalfByte = getNextHalfByte();
 | 
			
		||||
                nextHalfByte = getNextHalfByte();
 | 
			
		||||
            }
 | 
			
		||||
            if (length == 0)
 | 
			
		||||
            {
 | 
			
		||||
                getNextLength();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        uint8_t getNextHalfByte()
 | 
			
		||||
        {
 | 
			
		||||
            if (firstHalfByte) // Start of new byte, read data from BW_RLE stream
 | 
			
		||||
            {
 | 
			
		||||
                assert(data);
 | 
			
		||||
                rleByte = *data++;
 | 
			
		||||
            }
 | 
			
		||||
            uint8_t len = rleByte & 0xF;    // Read lower half
 | 
			
		||||
            rleByte >>= 4;                  // Shift upper half down to make it ready
 | 
			
		||||
            firstHalfByte = !firstHalfByte; // Toggle 'start of byte'
 | 
			
		||||
            return len;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        const uint8_t* data;  // Pointer to compressed data (BW_RLE)
 | 
			
		||||
        uint8_t thisHalfByte; // The next half byte from the input
 | 
			
		||||
        uint8_t nextHalfByte; // The next half byte after 'thisHalfByte'
 | 
			
		||||
        uint8_t rleByte;      // Byte read from compressed data
 | 
			
		||||
        bool firstHalfByte;   // Are we about to process first half byte of rleByte?
 | 
			
		||||
        uint8_t color;        // Current color
 | 
			
		||||
        int32_t length;       // Number of pixels with the given color
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    friend class PainterBWBitmap;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_LCD1BPP_HPP
 | 
			
		||||
@ -0,0 +1,587 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file platform/driver/lcd/LCD24bpp.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touchgfx::LCD24bpp class.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_LCD24BPP_HPP
 | 
			
		||||
#define TOUCHGFX_LCD24BPP_HPP
 | 
			
		||||
 | 
			
		||||
#include <touchgfx/Bitmap.hpp>
 | 
			
		||||
#include <touchgfx/hal/HAL.hpp>
 | 
			
		||||
#include <touchgfx/hal/Types.hpp>
 | 
			
		||||
#include <touchgfx/lcd/LCD.hpp>
 | 
			
		||||
#include <touchgfx/lcd/LCD24DebugPrinter.hpp>
 | 
			
		||||
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
/**
 | 
			
		||||
 * This class contains the various low-level drawing routines for drawing bitmaps, texts and
 | 
			
		||||
 * rectangles on 16 bits per pixel displays.
 | 
			
		||||
 *
 | 
			
		||||
 * @see LCD
 | 
			
		||||
 *
 | 
			
		||||
 * @note All coordinates are expected to be in absolute coordinates!
 | 
			
		||||
 */
 | 
			
		||||
class LCD24bpp : public LCD
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    LCD24bpp();
 | 
			
		||||
 | 
			
		||||
    virtual void drawPartialBitmap(const Bitmap& bitmap, int16_t x, int16_t y, const Rect& rect, uint8_t alpha = 255, bool useOptimized = true);
 | 
			
		||||
 | 
			
		||||
    virtual void blitCopy(const uint16_t* sourceData, const Rect& source, const Rect& blitRect, uint8_t alpha, bool hasTransparentPixels);
 | 
			
		||||
 | 
			
		||||
    virtual void blitCopy(const uint8_t* sourceData, Bitmap::BitmapFormat sourceFormat, const Rect& source, const Rect& blitRect, uint8_t alpha, bool hasTransparentPixels);
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t* copyFrameBufferRegionToMemory(const Rect& visRegion, const Rect& absRegion, const BitmapId bitmapId);
 | 
			
		||||
 | 
			
		||||
    virtual Rect copyFrameBufferRegionToMemory(const Rect& visRegion, const Rect& absRegion, uint8_t* dst, int16_t dstWidth, int16_t dstHeight);
 | 
			
		||||
 | 
			
		||||
    virtual void copyAreaFromTFTToClientBuffer(const Rect& region);
 | 
			
		||||
 | 
			
		||||
    virtual void fillRect(const Rect& rect, colortype color, uint8_t alpha = 255);
 | 
			
		||||
 | 
			
		||||
    virtual void fillBuffer(uint8_t* const destination, uint16_t pixelStride, const Rect& rect, const colortype color, const uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t bitDepth() const
 | 
			
		||||
    {
 | 
			
		||||
        return 24;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual Bitmap::BitmapFormat framebufferFormat() const
 | 
			
		||||
    {
 | 
			
		||||
        return Bitmap::RGB888;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t framebufferStride() const
 | 
			
		||||
    {
 | 
			
		||||
        return getFramebufferStride();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Framebuffer stride in bytes. The distance (in bytes) from the start of one
 | 
			
		||||
     * framebuffer row, to the next.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The number of bytes in one framebuffer row.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint16_t getFramebufferStride()
 | 
			
		||||
    {
 | 
			
		||||
        assert(HAL::FRAME_BUFFER_WIDTH > 0 && "HAL has not been initialized yet");
 | 
			
		||||
        return HAL::FRAME_BUFFER_WIDTH * 3;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for all image formats. This allows drawing any image
 | 
			
		||||
     * using Bilinear Interpolation and Nearest Neighbor algorithms, but might use a lot of
 | 
			
		||||
     * memory for the drawing algorithms.
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperAll();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_RGB888 image format. This allows drawing L8_RGB888
 | 
			
		||||
     * images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_RGB888_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperL8_RGB888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_RGB888();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_RGB888 image format. This allows drawing L8_RGB888
 | 
			
		||||
     * images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_RGB888, enableTextureMapperL8_RGB888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_RGB888_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_RGB888 image format. This allows drawing L8_RGB888
 | 
			
		||||
     * images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_RGB888, enableTextureMapperL8_RGB888_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_RGB888_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_ARGB8888 image format. This allows drawing
 | 
			
		||||
     * L8_ARGB8888 images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_ARGB8888_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperL8_ARGB8888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_ARGB8888();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_ARGB8888 image format. This allows drawing
 | 
			
		||||
     * L8_ARGB8888 images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_ARGB8888, enableTextureMapperL8_ARGB8888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_ARGB8888_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_ARGB8888 image format. This allows drawing
 | 
			
		||||
     * L8_ARGB8888 images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_ARGB8888, enableTextureMapperL8_ARGB8888_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_ARGB8888_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for RGB888 image format. This allows drawing RGB888
 | 
			
		||||
     * images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGB888_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperRGB888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB888();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for RGB888 image format. This allows drawing RGB888
 | 
			
		||||
     * images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGB888, enableTextureMapperRGB888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB888_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for RGB888 image format. This allows drawing RGB888
 | 
			
		||||
     * images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGB888, enableTextureMapperRGB888_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB888_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB8888 image format. This allows drawing ARGB8888
 | 
			
		||||
     * images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB8888_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperARGB8888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB8888();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB8888 image format. This allows drawing ARGB8888
 | 
			
		||||
     * images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB8888, enableTextureMapperARGB8888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB8888_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB8888 image format. This allows drawing ARGB8888
 | 
			
		||||
     * images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB8888, enableTextureMapperARGB8888_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB8888_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4_BilinearInterpolation, enableTextureMapperA4_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4, enableTextureMapperA4_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4, enableTextureMapperA4_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    virtual DrawTextureMapScanLineBase* getTextureMapperDrawScanLine(const TextureSurface& texture, RenderingVariant renderVariant, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Find out how much to advance in the display buffer to get to the next pixel.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  rotatedDisplay Is the display running in portrait mode?
 | 
			
		||||
     * @param  textRotation   Rotation to perform.
 | 
			
		||||
     *
 | 
			
		||||
     * @return How much to advance to get to the next pixel.
 | 
			
		||||
     */
 | 
			
		||||
    static int nextPixel(bool rotatedDisplay, TextRotation textRotation);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Find out how much to advance in the display buffer to get to the next line.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  rotatedDisplay Is the display running in portrait mode?
 | 
			
		||||
     * @param  textRotation   Rotation to perform.
 | 
			
		||||
     *
 | 
			
		||||
     * @return How much to advance to get to the next line.
 | 
			
		||||
     */
 | 
			
		||||
    static int nextLine(bool rotatedDisplay, TextRotation textRotation);
 | 
			
		||||
 | 
			
		||||
    virtual void drawGlyph(uint16_t* wbuf16, Rect widgetArea, int16_t x, int16_t y, uint16_t offsetX, uint16_t offsetY, const Rect& invalidatedArea, const GlyphNode* glyph, const uint8_t* glyphData, uint8_t byteAlignRow, colortype color, uint8_t bitsPerPixel, uint8_t alpha, TextRotation rotation);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D source-array to the framebuffer. Per pixel alpha is not supported, only
 | 
			
		||||
     * global alpha.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData16 The source-array pointer (points to the beginning of the data). The
 | 
			
		||||
     *                      sourceData must be stored as 16- bits RGB565 values.
 | 
			
		||||
     * @param  source       The location and dimension of the source.
 | 
			
		||||
     * @param  blitRect     A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha        The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                      solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyRGB565(const uint16_t* sourceData16, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D source-array to the framebuffer performing alpha-blending per pixel as
 | 
			
		||||
     * specified if ARGB8888 is not supported by the DMA a software blend is performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData The source-array pointer (points to the beginning of the data). The
 | 
			
		||||
     *                    sourceData must be stored as 32- bits ARGB8888 values.
 | 
			
		||||
     * @param  source     The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect   A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha      The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                    solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyARGB8888(const uint32_t* sourceData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D indexed 8-bit source to the framebuffer performing alpha-blending per
 | 
			
		||||
     * pixel as specified if indexed format is not supported by the DMA a software blend is
 | 
			
		||||
     * performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData The source-indexes pointer (points to the beginning of the data). The
 | 
			
		||||
     *                    sourceData must be stored as 8- bits indexes.
 | 
			
		||||
     * @param  clutData   The source-clut pointer (points to the beginning of the CLUT color
 | 
			
		||||
     *                    format and size data followed by colors entries.
 | 
			
		||||
     * @param  source     The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect   A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha      The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                    solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyL8(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D indexed 8-bit source to the framebuffer performing alpha-blending per
 | 
			
		||||
     * pixel as specified if L8_ARGB8888 is not supported by the DMA a software blend is
 | 
			
		||||
     * performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData The source-indexes pointer (points to the beginning of the data). The
 | 
			
		||||
     *                    sourceData must be stored as 8- bits indexes.
 | 
			
		||||
     * @param  clutData   The source-clut pointer (points to the beginning of the CLUT color
 | 
			
		||||
     *                    format and size data followed by colors entries stored as 32-
 | 
			
		||||
     *                    bits (ARGB8888) format.
 | 
			
		||||
     * @param  source     The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect   A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha      The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                    solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyL8_ARGB8888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D indexed 8-bit source to the framebuffer performing alpha-blending per
 | 
			
		||||
     * pixel as specified if L8_RGB888 is not supported by the DMA a software blend is
 | 
			
		||||
     * performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData The source-indexes pointer (points to the beginning of the data). The
 | 
			
		||||
     *                    sourceData must be stored as 8- bits indexes.
 | 
			
		||||
     * @param  clutData   The source-clut pointer (points to the beginning of the CLUT color
 | 
			
		||||
     *                    format and size data followed by colors entries stored as 32-
 | 
			
		||||
     *                    bits (RGB888) format.
 | 
			
		||||
     * @param  source     The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect   A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha      The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                    solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyL8_RGB888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB888_Opaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB888_Opaque_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB888_Opaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB888_Opaque_BilinearInterpolation_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_ARGB8888_NonOpaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_ARGB8888_NonOpaque_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_ARGB8888_NonOpaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_ARGB8888_NonOpaque_BilinearInterpolation_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB888_Opaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB888_Opaque_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB888_Opaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB888_Opaque_BilinearInterpolation_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ARGB8888_NonOpaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ARGB8888_NonOpaque_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ARGB8888_NonOpaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ARGB8888_NonOpaque_BilinearInterpolation_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_BilinearInterpolation_NoGA;
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t bilinearInterpolate8(uint8_t c00, uint8_t c10, uint8_t x)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16);
 | 
			
		||||
        return (c00 * (16 - x) + c10 * x) >> 4;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t bilinearInterpolate8(uint8_t c00, uint8_t c10, uint8_t c01, uint8_t c11, uint8_t x, uint8_t y)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16 && y < 16);
 | 
			
		||||
        const uint16_t xy11 = x * y;
 | 
			
		||||
        const uint16_t xy10 = 16 * x - xy11;
 | 
			
		||||
        const uint16_t xy01 = 16 * y - xy11;
 | 
			
		||||
        const uint16_t xy00 = 256 - (xy11 + xy10 + xy01);
 | 
			
		||||
 | 
			
		||||
        return (c00 * xy00 + c10 * xy10 + c01 * xy01 + c11 * xy11) >> 8;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t bilinearInterpolate888(uint32_t c00, uint32_t c10, uint8_t x)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16);
 | 
			
		||||
        const uint16_t xy00 = 16 - x;
 | 
			
		||||
 | 
			
		||||
        return ((((c00 & 0xFF00FF) * xy00 + (c10 & 0xFF00FF) * x) >> 4) & 0xFF00FF) |
 | 
			
		||||
               ((((c00 & 0x00FF00) * xy00 + (c10 & 0x00FF00) * x) >> 4) & 0x00FF00);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t bilinearInterpolate888(uint32_t c00, uint32_t c10, uint32_t c01, uint32_t c11, uint8_t x, uint8_t y)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16 && y < 16);
 | 
			
		||||
        const uint16_t xy11 = x * y;
 | 
			
		||||
        const uint16_t xy10 = 16 * x - xy11;
 | 
			
		||||
        const uint16_t xy01 = 16 * y - xy11;
 | 
			
		||||
        const uint16_t xy00 = 256 - (xy11 + xy10 + xy01);
 | 
			
		||||
 | 
			
		||||
        return ((((c00 & 0xFF00FF) * xy00 + (c10 & 0xFF00FF) * xy10 + (c01 & 0xFF00FF) * xy01 + (c11 & 0xFF00FF) * xy11) >> 8) & 0xFF00FF) |
 | 
			
		||||
               ((((c00 & 0x00FF00) * xy00 + (c10 & 0x00FF00) * xy10 + (c01 & 0x00FF00) * xy01 + (c11 & 0x00FF00) * xy11) >> 8) & 0x00FF00);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div255_888(uint32_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        return div255rb((val & 0xFF00FF) * factor) | div255g((val & 0x00FF00) * factor);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div255_888_FFcheck(uint32_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        return factor < 0xFF ? div255_888(val, factor) : val;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    class DrawTextureMapScanLineBase24 : public DrawTextureMapScanLineBase
 | 
			
		||||
    {
 | 
			
		||||
    protected:
 | 
			
		||||
        FORCE_INLINE_FUNCTION bool overrunCheckNearestNeighbor(uint8_t*& destBits, int& pixelsToDraw, fixed16_16& U, fixed16_16& V, fixed16_16 deltaU, fixed16_16 deltaV, const int16_t maxWidth, const int16_t maxHeight) const;
 | 
			
		||||
        FORCE_INLINE_FUNCTION bool overrunCheckBilinearInterpolation(uint8_t*& destBits, int& pixelsToDraw, fixed16_16& U, fixed16_16& V, fixed16_16 deltaU, fixed16_16 deltaV, const int16_t maxWidth, const int16_t maxHeight) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB888_Opaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase24
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint16_t* const textureBits, const uint8_t* const palette, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB888_Opaque_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase24
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint16_t* const textureBits, const uint8_t* const palette, const int16_t bitmapWidth, const int UInt, const int VInt) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB888_Opaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase24
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t* const textureBits8, const uint8_t* const palette8, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint8_t* const destBits, const uint8_t* const textureBits8, const uint8_t* const palette8, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB888_Opaque_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase24
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t* const textureBits8, const uint8_t* const palette8, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint8_t* const destBits, const uint8_t* const textureBits8, const uint8_t* const palette8, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_ARGB8888_NonOpaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase24
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint16_t* const textureBits, const uint8_t* const palette, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_ARGB8888_NonOpaque_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase24
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint16_t* const textureBits, const uint8_t* const palette, const int16_t bitmapWidth, const int UInt, const int VInt) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_ARGB8888_NonOpaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase24
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t* const textureBits8, const uint32_t* const palette32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint8_t* const destBits, const uint8_t* const textureBits8, const uint32_t* const palette32, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_ARGB8888_NonOpaque_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase24
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t* const textureBits8, const uint32_t* const palette32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint8_t* const destBits, const uint8_t* const textureBits8, const uint32_t* const palette32, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB888_Opaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase24
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t* const textureBits8, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB888_Opaque_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase24
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t* const textureBits8, const int16_t bitmapWidth, const int UInt, const int VInt) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB888_Opaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase24
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t* const textureBits8, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint8_t* const destBits, const uint8_t* const textureBits8, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB888_Opaque_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase24
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t* const textureBits8, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint8_t* const destBits, const uint8_t* const textureBits8, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ARGB8888_NonOpaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase24
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ARGB8888_NonOpaque_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase24
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int UInt, const int VInt) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ARGB8888_NonOpaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase24
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint8_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ARGB8888_NonOpaque_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase24
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint8_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_NearestNeighbor_GA : public DrawTextureMapScanLineBase24
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t a4, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase24
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t a4) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_BilinearInterpolation_GA : public DrawTextureMapScanLineBase24
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint8_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase24
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint8_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_LCD24BPP_HPP
 | 
			
		||||
@ -0,0 +1,368 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file platform/driver/lcd/LCD2bpp.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touchgfx::LCD2bpp class.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_LCD2BPP_HPP
 | 
			
		||||
#define TOUCHGFX_LCD2BPP_HPP
 | 
			
		||||
 | 
			
		||||
#include <touchgfx/Bitmap.hpp>
 | 
			
		||||
#include <touchgfx/Color.hpp>
 | 
			
		||||
#include <touchgfx/hal/HAL.hpp>
 | 
			
		||||
#include <touchgfx/hal/Types.hpp>
 | 
			
		||||
#include <touchgfx/lcd/LCD.hpp>
 | 
			
		||||
#include <touchgfx/lcd/LCD2DebugPrinter.hpp>
 | 
			
		||||
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
#define USE_LSB
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * This class contains the various low-level drawing routines for drawing bitmaps, texts and
 | 
			
		||||
 * rectangles on 2 bits per pixel gray scale displays.
 | 
			
		||||
 *
 | 
			
		||||
 * @see LCD
 | 
			
		||||
 *
 | 
			
		||||
 * @note All coordinates are expected to be in absolute coordinates!
 | 
			
		||||
 */
 | 
			
		||||
class LCD2bpp : public LCD
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    LCD2bpp();
 | 
			
		||||
 | 
			
		||||
    virtual void drawPartialBitmap(const Bitmap& bitmap, int16_t x, int16_t y, const Rect& rect, uint8_t alpha = 255, bool useOptimized = true);
 | 
			
		||||
 | 
			
		||||
    virtual void blitCopy(const uint16_t* sourceData, const Rect& source, const Rect& blitRect, uint8_t alpha, bool hasTransparentPixels);
 | 
			
		||||
 | 
			
		||||
    virtual void blitCopy(const uint8_t* sourceData, Bitmap::BitmapFormat sourceFormat, const Rect& source, const Rect& blitRect, uint8_t alpha, bool hasTransparentPixels);
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t* copyFrameBufferRegionToMemory(const Rect& visRegion, const Rect& absRegion, const BitmapId bitmapId);
 | 
			
		||||
 | 
			
		||||
    virtual Rect copyFrameBufferRegionToMemory(const Rect& visRegion, const Rect& absRegion, uint8_t* dst, int16_t dstWidth, int16_t dstHeight);
 | 
			
		||||
 | 
			
		||||
    virtual void copyAreaFromTFTToClientBuffer(const Rect& region);
 | 
			
		||||
 | 
			
		||||
    virtual void fillRect(const Rect& rect, colortype color, uint8_t alpha = 255);
 | 
			
		||||
 | 
			
		||||
    virtual void fillBuffer(uint8_t* const destination, uint16_t pixelStride, const Rect& rect, const colortype color, const uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t bitDepth() const
 | 
			
		||||
    {
 | 
			
		||||
        return 2;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual Bitmap::BitmapFormat framebufferFormat() const
 | 
			
		||||
    {
 | 
			
		||||
        return Bitmap::GRAY2;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t framebufferStride() const
 | 
			
		||||
    {
 | 
			
		||||
        return getFramebufferStride();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Framebuffer stride in bytes. The distance (in bytes) from the start of one
 | 
			
		||||
     * framebuffer row, to the next.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The number of bytes in one framebuffer row.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint16_t getFramebufferStride()
 | 
			
		||||
    {
 | 
			
		||||
        assert(HAL::FRAME_BUFFER_WIDTH > 0 && "HAL has not been initialized yet");
 | 
			
		||||
        return (HAL::FRAME_BUFFER_WIDTH + 3) / 4;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Generates a color representation to be used on the LCD, based on 24 bit RGB values.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  red   Value of the red part (0-255).
 | 
			
		||||
     * @param  green Value of the green part (0-255).
 | 
			
		||||
     * @param  blue  Value of the blue part (0-255).
 | 
			
		||||
     *
 | 
			
		||||
     * @return The color representation depending on LCD color format.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getNativeColorFromRGB(uint8_t red, uint8_t green, uint8_t blue)
 | 
			
		||||
    {
 | 
			
		||||
        // Find the GRAY value (http://en.wikipedia.org/wiki/Luma_%28video%29) rounded to nearest integer
 | 
			
		||||
        return (red * 54 + green * 183 + blue * 19) >> 14;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Generates a color representation to be used on the LCD, based on 24 bit RGB values.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  color The color.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The color representation depending on LCD color format.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getNativeColor(colortype color)
 | 
			
		||||
    {
 | 
			
		||||
        return getNativeColorFromRGB(Color::getRed(color), Color::getGreen(color), Color::getBlue(color));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for all image formats. This allows drawing any image
 | 
			
		||||
     * using Bilinear Interpolation and Nearest Neighbor algorithms, but might use a lot of
 | 
			
		||||
     * memory for the drawing algorithms.
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperAll();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for GRAY2 image format. This allows drawing GRAY2 images
 | 
			
		||||
     * using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperGRAY2_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperGRAY2_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperGRAY2();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for GRAY2 image format. This allows drawing GRAY2 images
 | 
			
		||||
     * using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperGRAY2, enableTextureMapperGRAY2_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperGRAY2_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for GRAY2 image format. This allows drawing GRAY2 images
 | 
			
		||||
     * using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperGRAY2, enableTextureMapperGRAY2_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperGRAY2_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Shift value to get the right pixel in a byte.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  offset The offset.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The shift value.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static int shiftVal(int offset)
 | 
			
		||||
    {
 | 
			
		||||
#ifdef USE_LSB
 | 
			
		||||
        return (offset & 3) << 1;
 | 
			
		||||
#else
 | 
			
		||||
        return (3 - (offset & 3)) << 1;
 | 
			
		||||
#endif
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Get pixel from buffer/image.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  addr   The address.
 | 
			
		||||
     * @param  offset The offset.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The pixel value.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getPixel(const uint8_t* addr, int offset)
 | 
			
		||||
    {
 | 
			
		||||
        return (addr[offset >> 2] >> shiftVal(offset)) & 3;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Get pixel from buffer/image.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  addr   The address.
 | 
			
		||||
     * @param  offset The offset.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The pixel value.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getPixel(const uint16_t* addr, int offset)
 | 
			
		||||
    {
 | 
			
		||||
        return getPixel(reinterpret_cast<const uint8_t*>(addr), offset);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Set pixel in buffer.
 | 
			
		||||
     *
 | 
			
		||||
     * @param [in] addr   The address.
 | 
			
		||||
     * @param      offset The offset.
 | 
			
		||||
     * @param      value  The value.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static void setPixel(uint8_t* addr, int offset, uint8_t value)
 | 
			
		||||
    {
 | 
			
		||||
        int shift = shiftVal(offset);
 | 
			
		||||
        addr[offset >> 2] = (addr[offset >> 2] & ~(3 << shift)) | ((value & 3) << shift);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Set pixel in buffer.
 | 
			
		||||
     *
 | 
			
		||||
     * @param [in] addr   The address.
 | 
			
		||||
     * @param      offset The offset.
 | 
			
		||||
     * @param      value  The value.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static void setPixel(uint16_t* addr, int offset, uint8_t value)
 | 
			
		||||
    {
 | 
			
		||||
        setPixel(reinterpret_cast<uint8_t*>(addr), offset, value);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    static const uint8_t alphaBlend[16][4][4]; ///< The alpha lookup table to avoid arithmetics when alpha blending
 | 
			
		||||
 | 
			
		||||
    virtual DrawTextureMapScanLineBase* getTextureMapperDrawScanLine(const TextureSurface& texture, RenderingVariant renderVariant, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Find out how much to advance in the display buffer to get to the next pixel.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  rotatedDisplay Is the display running in portrait mode?
 | 
			
		||||
     * @param  textRotation   Rotation to perform.
 | 
			
		||||
     *
 | 
			
		||||
     * @return How much to advance to get to the next pixel.
 | 
			
		||||
     */
 | 
			
		||||
    static int nextPixel(bool rotatedDisplay, TextRotation textRotation);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Find out how much to advance in the display buffer to get to the next line.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  rotatedDisplay Is the display running in portrait mode?
 | 
			
		||||
     * @param  textRotation   Rotation to perform.
 | 
			
		||||
     *
 | 
			
		||||
     * @return How much to advance to get to the next line.
 | 
			
		||||
     */
 | 
			
		||||
    static int nextLine(bool rotatedDisplay, TextRotation textRotation);
 | 
			
		||||
 | 
			
		||||
    virtual void drawGlyph(uint16_t* wbuf16, Rect widgetArea, int16_t x, int16_t y, uint16_t offsetX, uint16_t offsetY, const Rect& invalidatedArea, const GlyphNode* glyph, const uint8_t* glyphData, uint8_t byteAlignRow, colortype color, uint8_t bitsPerPixel, uint8_t alpha, TextRotation rotation);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blit a 2D source-array to the framebuffer performing alpha-blending per pixel as
 | 
			
		||||
     * specified Performs always a software blend.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData16    The source-array pointer (points to the beginning of the
 | 
			
		||||
     *                         data). The sourceData must be stored as 2bpp GRAY2 values.
 | 
			
		||||
     * @param  sourceAlphaData The alpha channel array pointer (points to the beginning of
 | 
			
		||||
     *                         the data)
 | 
			
		||||
     * @param  source          The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect        A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha           The alpha value to use for blending applied to the whole
 | 
			
		||||
     *                         image (255 = solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyAlphaPerPixel(const uint16_t* sourceData16, const uint8_t* sourceAlphaData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Copies a rectangular area.
 | 
			
		||||
     *
 | 
			
		||||
     * @param      srcAddress     Source address (byte address).
 | 
			
		||||
     * @param      srcStride      Source stride (number of bytes to advance to next line).
 | 
			
		||||
     * @param      srcPixelOffset Source pixel offset (first pixel in first source byte).
 | 
			
		||||
     * @param [in] dstAddress     If destination address (byte address).
 | 
			
		||||
     * @param      dstStride      Destination stride (number of bytes to advance to next line).
 | 
			
		||||
     * @param      dstPixelOffset Destination pixel offset (first pixel in destination byte).
 | 
			
		||||
     * @param      width          The width of area (in pixels).
 | 
			
		||||
     * @param      height         The height of area (in pixels).
 | 
			
		||||
     */
 | 
			
		||||
    void copyRect(const uint8_t* srcAddress, uint16_t srcStride, uint8_t srcPixelOffset, uint8_t* RESTRICT dstAddress, uint16_t dstStride, uint8_t dstPixelOffset, uint16_t width, uint16_t height) const;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_GRAY2_NonOpaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_GRAY2_Opaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_GRAY2_NonOpaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_GRAY2_Opaque_BilinearInterpolation_GA;
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t bilinearInterpolate8(uint8_t c00, uint8_t c10, uint8_t x)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16);
 | 
			
		||||
        uint16_t xy10 = 16 * x;
 | 
			
		||||
        uint16_t xy00 = 256 - xy10;
 | 
			
		||||
 | 
			
		||||
        return (c00 * xy00 + c10 * xy10) >> 8;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t bilinearInterpolate8(uint8_t c00, uint8_t c10, uint8_t c01, uint8_t c11, uint8_t x, uint8_t y)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16 && y < 16);
 | 
			
		||||
        uint16_t xy11 = x * y;
 | 
			
		||||
        uint16_t xy10 = 16 * x - xy11;
 | 
			
		||||
        uint16_t xy01 = 16 * y - xy11;
 | 
			
		||||
        uint16_t xy00 = 256 - (xy11 + xy10 + xy01);
 | 
			
		||||
 | 
			
		||||
        return (c00 * xy00 + c10 * xy10 + c01 * xy01 + c11 * xy11) >> 8;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t div255_2(uint16_t value)
 | 
			
		||||
    {
 | 
			
		||||
        return div255(value * 0x55) >> 6;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    class DrawTextureMapScanLineBase2 : public DrawTextureMapScanLineBase
 | 
			
		||||
    {
 | 
			
		||||
    protected:
 | 
			
		||||
        FORCE_INLINE_FUNCTION bool overrunCheckBilinearInterpolation(uint32_t& destOffset, int& pixelsToDraw, fixed16_16& U, fixed16_16& V, fixed16_16 deltaU, fixed16_16 deltaV, const int16_t maxWidth, const int16_t maxHeight) const;
 | 
			
		||||
        FORCE_INLINE_FUNCTION bool overrunCheckNearestNeighbor(uint32_t& destOffset, int& pixelsToDraw, fixed16_16& U, fixed16_16& V, fixed16_16 deltaU, fixed16_16 deltaV, const int16_t maxWidth, const int16_t maxHeight) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_GRAY2_NonOpaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase2
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* destAddress, const uint32_t destOffset, const uint16_t* const textureBits, const uint8_t* const alphaBits, const int16_t bitmapStride, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* destAddress, const uint32_t destOffset, const uint16_t* const textureBits, const uint8_t* const alphaBits, const int16_t bitmapStride, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_GRAY2_Opaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase2
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* destAddress, const uint32_t destOffset, const uint16_t* const textureBits, const int16_t bitmapStride, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* destAddress, const uint32_t destOffset, const uint16_t* const textureBits, const int16_t bitmapStride, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_GRAY2_NonOpaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase2
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* destAddress, const uint32_t destOffset, const uint16_t* const textureBits, const uint8_t* const alphaBits, const int16_t bitmapStride, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_GRAY2_Opaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase2
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* destAddress, const uint32_t destOffset, const uint16_t* const textureBits, const int16_t bitmapStride, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_NearestNeighbor_GA : public DrawTextureMapScanLineBase2
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destAddress, const uint32_t destOffset, const uint8_t a4, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_BilinearInterpolation_GA : public DrawTextureMapScanLineBase2
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destAddress, const uint32_t destOffset, const uint16_t* const textureBits, const uint32_t offset, const int16_t bitmapStride, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destAddress, const uint32_t destOffset, const uint16_t* const textureBits, const uint16_t bitmapStride, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_LCD2BPP_HPP
 | 
			
		||||
@ -0,0 +1,904 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file platform/driver/lcd/LCD32bpp.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touchgfx::LCD32bpp class.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_LCD32BPP_HPP
 | 
			
		||||
#define TOUCHGFX_LCD32BPP_HPP
 | 
			
		||||
 | 
			
		||||
#include <touchgfx/Bitmap.hpp>
 | 
			
		||||
#include <touchgfx/Color.hpp>
 | 
			
		||||
#include <touchgfx/hal/HAL.hpp>
 | 
			
		||||
#include <touchgfx/hal/Types.hpp>
 | 
			
		||||
#include <touchgfx/lcd/LCD.hpp>
 | 
			
		||||
#include <touchgfx/lcd/LCD32DebugPrinter.hpp>
 | 
			
		||||
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
struct GlyphNode;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * This class contains the various low-level drawing routines for drawing bitmaps, texts and
 | 
			
		||||
 * rectangles on 16 bits per pixel displays.
 | 
			
		||||
 *
 | 
			
		||||
 * @see LCD
 | 
			
		||||
 *
 | 
			
		||||
 * @note All coordinates are expected to be in absolute coordinates!
 | 
			
		||||
 */
 | 
			
		||||
class LCD32bpp : public LCD
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    LCD32bpp();
 | 
			
		||||
 | 
			
		||||
    virtual void drawPartialBitmap(const Bitmap& bitmap, int16_t x, int16_t y, const Rect& rect, uint8_t alpha = 255, bool useOptimized = true);
 | 
			
		||||
 | 
			
		||||
    virtual void blitCopy(const uint16_t* sourceData, const Rect& source, const Rect& blitRect, uint8_t alpha, bool hasTransparentPixels);
 | 
			
		||||
 | 
			
		||||
    virtual void blitCopy(const uint8_t* sourceData, Bitmap::BitmapFormat sourceFormat, const Rect& source, const Rect& blitRect, uint8_t alpha, bool hasTransparentPixels);
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t* copyFrameBufferRegionToMemory(const Rect& visRegion, const Rect& absRegion, const BitmapId bitmapId);
 | 
			
		||||
 | 
			
		||||
    virtual Rect copyFrameBufferRegionToMemory(const Rect& visRegion, const Rect& absRegion, uint8_t* dst, int16_t dstWidth, int16_t dstHeight);
 | 
			
		||||
 | 
			
		||||
    virtual void copyAreaFromTFTToClientBuffer(const Rect& region);
 | 
			
		||||
 | 
			
		||||
    virtual void fillRect(const Rect& rect, colortype color, uint8_t alpha = 255);
 | 
			
		||||
 | 
			
		||||
    virtual void fillBuffer(uint8_t* const destination, uint16_t pixelStride, const Rect& rect, const colortype color, const uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t bitDepth() const
 | 
			
		||||
    {
 | 
			
		||||
        return 32;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual Bitmap::BitmapFormat framebufferFormat() const
 | 
			
		||||
    {
 | 
			
		||||
        return Bitmap::ARGB8888;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t framebufferStride() const
 | 
			
		||||
    {
 | 
			
		||||
        return getFramebufferStride();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Framebuffer stride in bytes. The distance (in bytes) from the start of one
 | 
			
		||||
     * framebuffer row, to the next.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The number of bytes in one framebuffer row.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint16_t getFramebufferStride()
 | 
			
		||||
    {
 | 
			
		||||
        assert(HAL::FRAME_BUFFER_WIDTH > 0 && "HAL has not been initialized yet");
 | 
			
		||||
        return HAL::FRAME_BUFFER_WIDTH * 4;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for all image formats. This allows drawing any image
 | 
			
		||||
     * using Bilinear Interpolation and Nearest Neighbor algorithms, but might use a lot of
 | 
			
		||||
     * memory for the drawing algorithms.
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperAll();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_RGB565 image format. This allows drawing L8_RGB565
 | 
			
		||||
     * images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_RGB565_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperL8_RGB565_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_RGB565();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_RGB565 image format. This allows drawing L8_RGB565
 | 
			
		||||
     * images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_RGB565, enableTextureMapperL8_RGB565_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_RGB565_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_RGB565 image format. This allows drawing L8_RGB565
 | 
			
		||||
     * images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_RGB565, enableTextureMapperL8_RGB565_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_RGB565_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_RGB888 image format. This allows drawing L8_RGB888
 | 
			
		||||
     * images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_RGB888_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperL8_RGB888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_RGB888();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_RGB888 image format. This allows drawing L8_RGB888
 | 
			
		||||
     * images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_RGB888, enableTextureMapperL8_RGB888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_RGB888_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_RGB888 image format. This allows drawing L8_RGB888
 | 
			
		||||
     * images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_RGB888, enableTextureMapperL8_RGB888_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_RGB888_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_ARGB8888 image format. This allows drawing
 | 
			
		||||
     * L8_ARGB8888 images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_ARGB8888_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperL8_ARGB8888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_ARGB8888();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_ARGB8888 image format. This allows drawing
 | 
			
		||||
     * L8_ARGB8888 images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_ARGB8888, enableTextureMapperL8_ARGB8888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_ARGB8888_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_ARGB8888 image format. This allows drawing
 | 
			
		||||
     * L8_ARGB8888 images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_ARGB8888, enableTextureMapperL8_ARGB8888_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_ARGB8888_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for RGB565 image format. This allows drawing RGB565
 | 
			
		||||
     * images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB565();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for Opaque RGB565 image format. This allows drawing
 | 
			
		||||
     * RGB565 images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGB565, enableTextureMapperRGB565_NonOpaque_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB565_Opaque_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for NonOpaque RGB565 image format. This allows drawing
 | 
			
		||||
     * RGB565 images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGB565, enableTextureMapperRGB565_Opaque_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB565_NonOpaque_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for Opaque RGB565 image format. This allows drawing
 | 
			
		||||
     * RGB565 images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGB565, enableTextureMapperRGB565_NonOpaque_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB565_Opaque_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for NonOpaque RGB565 image format. This allows drawing
 | 
			
		||||
     * RGB565 images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGB565, enableTextureMapperRGB565_Opaque_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB565_NonOpaque_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for RGB888 image format. This allows drawing RGB888
 | 
			
		||||
     * images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGB888_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperRGB888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB888();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for RGB888 image format. This allows drawing RGB888
 | 
			
		||||
     * images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGB888, enableTextureMapperRGB888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB888_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for RGB888 image format. This allows drawing RGB888
 | 
			
		||||
     * images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGB888, enableTextureMapperRGB888_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB888_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB8888 image format. This allows drawing ARGB8888
 | 
			
		||||
     * images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB8888_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperARGB8888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB8888();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB8888 image format. This allows drawing ARGB8888
 | 
			
		||||
     * images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB8888, enableTextureMapperARGB8888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB8888_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB8888 image format. This allows drawing ARGB8888
 | 
			
		||||
     * images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB8888, enableTextureMapperARGB8888_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB8888_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4_BilinearInterpolation, enableTextureMapperA4_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4, enableTextureMapperA4_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4, enableTextureMapperA4_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    virtual DrawTextureMapScanLineBase* getTextureMapperDrawScanLine(const TextureSurface& texture, RenderingVariant renderVariant, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Find out how much to advance in the display buffer to get to the next pixel.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  rotatedDisplay Is the display running in portrait mode?
 | 
			
		||||
     * @param  textRotation   Rotation to perform.
 | 
			
		||||
     *
 | 
			
		||||
     * @return How much to advance to get to the next pixel.
 | 
			
		||||
     */
 | 
			
		||||
    static int nextPixel(bool rotatedDisplay, TextRotation textRotation);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Find out how much to advance in the display buffer to get to the next line.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  rotatedDisplay Is the display running in portrait mode?
 | 
			
		||||
     * @param  textRotation   Rotation to perform.
 | 
			
		||||
     *
 | 
			
		||||
     * @return How much to advance to get to the next line.
 | 
			
		||||
     */
 | 
			
		||||
    static int nextLine(bool rotatedDisplay, TextRotation textRotation);
 | 
			
		||||
 | 
			
		||||
    virtual void drawGlyph(uint16_t* wbuf16, Rect widgetArea, int16_t x, int16_t y, uint16_t offsetX, uint16_t offsetY, const Rect& invalidatedArea, const GlyphNode* glyph, const uint8_t* glyphData, uint8_t byteAlignRow, colortype color, uint8_t bitsPerPixel, uint8_t alpha, TextRotation rotation);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D source-array to the framebuffer performing alpha-blending per pixel as
 | 
			
		||||
     * specified. If RGB888 is not supported by the DMA a software blend is performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData16 The source-array pointer (points to the beginning of the data). The
 | 
			
		||||
     *                      sourceData must be stored as 24- bits RGB888 values.
 | 
			
		||||
     * @param  source       The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect     A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha        The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                      solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyRGB888(const uint16_t* sourceData16, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D source-array to the framebuffer performing alpha-blending per pixel as
 | 
			
		||||
     * specified. If! RGB565 is not supported by the DMA a software blend is performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData16 The source-array pointer (points to the beginning of the data). The
 | 
			
		||||
     *                      sourceData must be stored as 16- bits RGB565 values.
 | 
			
		||||
     * @param  source       The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect     A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha        The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                      solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyRGB565(const uint16_t* sourceData16, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D indexed 8-bit source to the framebuffer performing alpha-blending per
 | 
			
		||||
     * pixel as specified if indexed format is not supported by the DMA a software blend is
 | 
			
		||||
     * performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData The source-indexes pointer (points to the beginning of the data). The
 | 
			
		||||
     *                    sourceData must be stored as 8- bits indexes.
 | 
			
		||||
     * @param  clutData   The source-clut pointer (points to the beginning of the CLUT color
 | 
			
		||||
     *                    format and size data followed by colors entries.
 | 
			
		||||
     * @param  source     The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect   A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha      The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                    solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyL8(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D indexed 8-bit source to the framebuffer performing alpha-blending per
 | 
			
		||||
     * pixel as specified if L8_ARGB8888 is not supported by the DMA a software blend is
 | 
			
		||||
     * performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData The source-indexes pointer (points to the beginning of the data). The
 | 
			
		||||
     *                    sourceData must be stored as 8- bits indexes.
 | 
			
		||||
     * @param  clutData   The source-clut pointer (points to the beginning of the CLUT color
 | 
			
		||||
     *                    format and size data followed by colors entries stored as 32-
 | 
			
		||||
     *                    bits (ARGB8888) format.
 | 
			
		||||
     * @param  source     The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect   A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha      The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                    solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyL8_ARGB8888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D indexed 8-bit source to the framebuffer performing alpha-blending per
 | 
			
		||||
     * pixel as specified if L8_RGB888 is not supported by the DMA a software blend is
 | 
			
		||||
     * performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData The source-indexes pointer (points to the beginning of the data). The
 | 
			
		||||
     *                    sourceData must be stored as 8- bits indexes.
 | 
			
		||||
     * @param  clutData   The source-clut pointer (points to the beginning of the CLUT color
 | 
			
		||||
     *                    format and size data followed by colors entries stored as 32-
 | 
			
		||||
     *                    bits (RGB888) format.
 | 
			
		||||
     * @param  source     The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect   A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha      The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                    solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyL8_RGB888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D indexed 8-bit source to the framebuffer performing alpha-blending per
 | 
			
		||||
     * pixel as specified if L8_RGB565 is not supported by the DMA a software blend is
 | 
			
		||||
     * performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData The source-indexes pointer (points to the beginning of the data). The
 | 
			
		||||
     *                    sourceData must be stored as 8- bits indexes.
 | 
			
		||||
     * @param  clutData   The source-clut pointer (points to the beginning of the CLUT color
 | 
			
		||||
     *                    format and size data followed by colors entries stored as 16-
 | 
			
		||||
     *                    bits (RGB565) format.
 | 
			
		||||
     * @param  source     The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect   A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha      The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                    solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyL8_RGB565(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB565_Opaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB565_Opaque_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB565_Opaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB565_Opaque_BilinearInterpolation_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB888_Opaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB888_Opaque_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB888_Opaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB888_Opaque_BilinearInterpolation_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_ARGB8888_NonOpaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_ARGB8888_NonOpaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_NonOpaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_NonOpaque_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_Opaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_Opaque_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_NonOpaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_NonOpaque_BilinearInterpolation_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_Opaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_Opaque_BilinearInterpolation_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB888_Opaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB888_Opaque_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB888_Opaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB888_Opaque_BilinearInterpolation_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ARGB8888_NonOpaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ARGB8888_NonOpaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_BilinearInterpolation_NoGA;
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t expandRgb565(uint16_t c)
 | 
			
		||||
    {
 | 
			
		||||
        return ((c & 0x07E0) << 16) | (c & ~0x07E0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint16_t compactRgb565(uint32_t c)
 | 
			
		||||
    {
 | 
			
		||||
        return ((c >> 16) & 0x07E0) | (c & ~0x07E0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t convertRgb565toArgb8888(uint16_t rgb565)
 | 
			
		||||
    {
 | 
			
		||||
        uint8_t r = (rgb565 & 0xF800) >> 8;
 | 
			
		||||
        r |= r >> 5;
 | 
			
		||||
        uint8_t g = (rgb565 & 0x07E0) >> 3;
 | 
			
		||||
        g |= g >> 6;
 | 
			
		||||
        uint8_t b = rgb565 << 3;
 | 
			
		||||
        b |= b >> 5;
 | 
			
		||||
        return (r << 16) | (g << 8) | b;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static void copy888(const uint8_t* const rgb888, uint8_t* const destBits)
 | 
			
		||||
    {
 | 
			
		||||
        destBits[0] = rgb888[0];
 | 
			
		||||
        destBits[1] = rgb888[1];
 | 
			
		||||
        destBits[2] = rgb888[2];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t cap_byte_value(int value)
 | 
			
		||||
    {
 | 
			
		||||
        return (value > 255) ? (255) : (value >= 0 ? value : 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static void alphaBlend888_premul(const uint8_t redFg, const uint8_t greenFg, const uint8_t blueFg, const uint8_t alpha, const uint8_t alphaFg, uint8_t* const destBits)
 | 
			
		||||
    {
 | 
			
		||||
        if (alphaFg == 255)
 | 
			
		||||
        {
 | 
			
		||||
            destBits[0] = blueFg;
 | 
			
		||||
            destBits[1] = greenFg;
 | 
			
		||||
            destBits[2] = redFg;
 | 
			
		||||
            destBits[3] = 255;
 | 
			
		||||
        }
 | 
			
		||||
        else if (alphaFg > 0)
 | 
			
		||||
        {
 | 
			
		||||
            const uint8_t alphaBg = destBits[3];
 | 
			
		||||
            const uint8_t alphaMult = LCD::div255(alphaFg * alphaBg);
 | 
			
		||||
            const uint8_t alphaOut = alphaFg + alphaBg - alphaMult;
 | 
			
		||||
 | 
			
		||||
            const uint8_t blueBg = destBits[0];
 | 
			
		||||
            destBits[0] = cap_byte_value((blueFg * alpha + blueBg * (alphaBg - alphaMult)) / alphaOut);
 | 
			
		||||
            const uint8_t greenBg = destBits[1];
 | 
			
		||||
            destBits[1] = cap_byte_value((greenFg * alpha + greenBg * (alphaBg - alphaMult)) / alphaOut);
 | 
			
		||||
            const uint8_t redBg = destBits[2];
 | 
			
		||||
            destBits[2] = cap_byte_value((redFg * alpha + redBg * (alphaBg - alphaMult)) / alphaOut);
 | 
			
		||||
            destBits[3] = alphaOut;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static void alphaBlend888_premul(const uint8_t* const rgb888, const uint8_t alpha, const uint8_t alphaFg, uint8_t* const destBits)
 | 
			
		||||
    {
 | 
			
		||||
        alphaBlend888_premul(rgb888[2], rgb888[1], rgb888[0], alpha, alphaFg, destBits);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static void alphaBlend888(const uint8_t redFg, const uint8_t greenFg, const uint8_t blueFg, const uint8_t alphaFg, uint8_t* const destBits)
 | 
			
		||||
    {
 | 
			
		||||
        if (alphaFg == 255)
 | 
			
		||||
        {
 | 
			
		||||
            destBits[0] = blueFg;
 | 
			
		||||
            destBits[1] = greenFg;
 | 
			
		||||
            destBits[2] = redFg;
 | 
			
		||||
            destBits[3] = 0xFF;
 | 
			
		||||
        }
 | 
			
		||||
        else if (alphaFg > 0)
 | 
			
		||||
        {
 | 
			
		||||
            const uint8_t alphaBg = destBits[3];
 | 
			
		||||
            const uint8_t alphaMult = LCD::div255(alphaFg * alphaBg);
 | 
			
		||||
            const uint8_t alphaOut = alphaFg + alphaBg - alphaMult;
 | 
			
		||||
 | 
			
		||||
            const uint8_t blueBg = destBits[0];
 | 
			
		||||
            destBits[0] = (blueFg * alphaFg + blueBg * (alphaBg - alphaMult)) / alphaOut;
 | 
			
		||||
            const uint8_t greenBg = destBits[1];
 | 
			
		||||
            destBits[1] = (greenFg * alphaFg + greenBg * (alphaBg - alphaMult)) / alphaOut;
 | 
			
		||||
            const uint8_t redBg = destBits[2];
 | 
			
		||||
            destBits[2] = (redFg * alphaFg + redBg * (alphaBg - alphaMult)) / alphaOut;
 | 
			
		||||
            destBits[3] = alphaOut;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static void alphaBlend888(const uint8_t* const rgb888, const uint8_t alphaFg, uint8_t* const destBits)
 | 
			
		||||
    {
 | 
			
		||||
        alphaBlend888(rgb888[2], rgb888[1], rgb888[0], alphaFg, destBits);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static void alphaBlend565_premul(const uint16_t rgb565, const uint8_t alpha, const uint8_t alphaFg, uint8_t* const destBits)
 | 
			
		||||
    {
 | 
			
		||||
        alphaBlend888_premul(Color::getRedFromRGB565(rgb565), Color::getGreenFromRGB565(rgb565), Color::getBlueFromRGB565(rgb565), alpha, alphaFg, destBits);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static void alphaBlend565(const uint16_t rgb565, const uint8_t alphaFg, uint8_t* const destBits)
 | 
			
		||||
    {
 | 
			
		||||
        alphaBlend888(Color::getRedFromRGB565(rgb565), Color::getGreenFromRGB565(rgb565), Color::getBlueFromRGB565(rgb565), alphaFg, destBits);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint16_t bilinearInterpolate565(uint16_t c00, uint16_t c10, uint16_t c01, uint16_t c11, uint8_t x, uint8_t y)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16 && y < 16);
 | 
			
		||||
        uint32_t a00 = expandRgb565(c00);
 | 
			
		||||
        uint32_t a10 = expandRgb565(c10);
 | 
			
		||||
        uint32_t a01 = expandRgb565(c01);
 | 
			
		||||
        uint32_t a11 = expandRgb565(c11);
 | 
			
		||||
 | 
			
		||||
        uint8_t xy = (x * y) >> 3;
 | 
			
		||||
        return compactRgb565((a00 * (32 - 2 * y - 2 * x + xy) + a10 * (2 * x - xy) + a01 * (2 * y - xy) + a11 * xy) >> 5);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint16_t bilinearInterpolate565(uint16_t c00, uint16_t c10, uint8_t x)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16);
 | 
			
		||||
        uint32_t a00 = expandRgb565(c00);
 | 
			
		||||
        uint32_t a10 = expandRgb565(c10);
 | 
			
		||||
 | 
			
		||||
        return compactRgb565((a00 * (32 - 2 * x) + a10 * (2 * x)) >> 5);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t bilinearInterpolate8(uint8_t c00, uint8_t c10, uint8_t x)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16);
 | 
			
		||||
        uint16_t xy10 = 16 * x;
 | 
			
		||||
        uint16_t xy00 = 256 - xy10;
 | 
			
		||||
 | 
			
		||||
        return (c00 * xy00 + c10 * xy10) >> 8;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t bilinearInterpolate8(uint8_t c00, uint8_t c10, uint8_t c01, uint8_t c11, uint8_t x, uint8_t y)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16 && y < 16);
 | 
			
		||||
        uint16_t xy11 = x * y;
 | 
			
		||||
        uint16_t xy10 = 16 * x - xy11;
 | 
			
		||||
        uint16_t xy01 = 16 * y - xy11;
 | 
			
		||||
        uint16_t xy00 = 256 - (xy11 + xy10 + xy01);
 | 
			
		||||
 | 
			
		||||
        return (c00 * xy00 + c10 * xy10 + c01 * xy01 + c11 * xy11) >> 8;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t bilinearInterpolate888(uint32_t c00, uint32_t c10, uint8_t x)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16);
 | 
			
		||||
        uint16_t xy10 = 16 * x;
 | 
			
		||||
        uint16_t xy00 = 256 - xy10;
 | 
			
		||||
 | 
			
		||||
        return ((((c00 & 0xFF00FF) * xy00 + (c10 & 0xFF00FF) * xy10) >> 8) & 0xFF00FF) |
 | 
			
		||||
               ((((c00 & 0x00FF00) * xy00 + (c10 & 0x00FF00) * xy10) >> 8) & 0x00FF00);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t bilinearInterpolate888(uint32_t c00, uint32_t c10, uint32_t c01, uint32_t c11, uint8_t x, uint8_t y)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16 && y < 16);
 | 
			
		||||
        uint16_t xy11 = x * y;
 | 
			
		||||
        uint16_t xy10 = 16 * x - xy11;
 | 
			
		||||
        uint16_t xy01 = 16 * y - xy11;
 | 
			
		||||
        uint16_t xy00 = 256 - (xy11 + xy10 + xy01);
 | 
			
		||||
 | 
			
		||||
        return ((((c00 & 0xFF00FF) * xy00 + (c10 & 0xFF00FF) * xy10 + (c01 & 0xFF00FF) * xy01 + (c11 & 0xFF00FF) * xy11) >> 8) & 0xFF00FF) |
 | 
			
		||||
               ((((c00 & 0x00FF00) * xy00 + (c10 & 0x00FF00) * xy10 + (c01 & 0x00FF00) * xy01 + (c11 & 0x00FF00) * xy11) >> 8) & 0x00FF00);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div255_888(uint32_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        return div255rb((val & 0xFF00FF) * factor) | div255g((val & 0x00FF00) * factor);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div255_888_FFcheck(uint32_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        return factor < 0xFF ? div255_888(val, factor) : val;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div31rb(uint16_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        uint32_t val32 = (val & 0xF81F) * (factor >> 3);
 | 
			
		||||
        return ((val32 + 0x0801 + ((val32 >> 5) & 0xF81F)) >> 5) & 0xF81F;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div31g(uint16_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        uint32_t val32 = (val & 0x07E0) * factor;
 | 
			
		||||
        return ((val32 + 0x0020 + (val32 >> 8)) >> 8) & 0x07E0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div255_565(uint16_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        return div31rb(val, factor) | div31g(val, factor);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div255_565_FFcheck(uint16_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        return factor < 0xFF ? div31rb(val, factor) | div31g(val, factor) : val;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    class DrawTextureMapScanLineBase32 : public DrawTextureMapScanLineBase
 | 
			
		||||
    {
 | 
			
		||||
    protected:
 | 
			
		||||
        FORCE_INLINE_FUNCTION bool overrunCheckNearestNeighbor(uint32_t*& destBits, int& pixelsToDraw, fixed16_16& U, fixed16_16& V, fixed16_16 deltaU, fixed16_16 deltaV, const int16_t maxWidth, const int16_t maxHeight) const;
 | 
			
		||||
        FORCE_INLINE_FUNCTION bool overrunCheckBilinearInterpolation(uint32_t*& destBits, int& pixelsToDraw, fixed16_16& U, fixed16_16& V, fixed16_16 deltaU, fixed16_16 deltaV, const int16_t maxWidth, const int16_t maxHeight) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB565_Opaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t* const textureBits8, const uint16_t* const palette16, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB565_Opaque_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t* const textureBits8, const uint16_t* const palette16, const int16_t bitmapWidth, const int UInt, const int VInt) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB565_Opaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t* const textureBits8, const uint16_t* const palette16, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint32_t* const destBits, const uint8_t* const textureBits8, const uint16_t* const palette16, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB565_Opaque_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t* const textureBits8, const uint16_t* const palette16, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint32_t* const destBits, const uint8_t* const textureBits8, const uint16_t* const palette16, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB888_Opaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t* const textureBits8, const uint8_t* const palette8, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB888_Opaque_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t* const textureBits8, const uint8_t* const palette8, const int16_t bitmapWidth, const int UInt, const int VInt) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB888_Opaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t* const textureBits8, const uint8_t* const palette8, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint32_t* const destBits, const uint8_t* const textureBits8, const uint8_t* const palette8, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB888_Opaque_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t* const textureBits8, const uint8_t* const palette8, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint32_t* const destBits, const uint8_t* const textureBits8, const uint8_t* const palette8, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_ARGB8888_NonOpaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t* const textureBits8, const uint32_t* const palette32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_ARGB8888_NonOpaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t* const textureBits8, const uint32_t* const palette32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint32_t* const destBits, const uint8_t* const textureBits8, const uint32_t* const palette32, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_NonOpaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint16_t* const textureBits, const uint8_t* alphaBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_NonOpaque_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint16_t* const textureBits, const uint8_t* alphaBits, const int16_t bitmapWidth, const int UInt, const int VInt) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_NonOpaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint16_t* const textureBits, const uint8_t* alphaBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint32_t* const destBits, const uint16_t* const textureBits, const uint8_t* alphaBits, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_NonOpaque_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint16_t* const textureBits, const uint8_t* alphaBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint32_t* const destBits, const uint16_t* const textureBits, const uint8_t* alphaBits, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_Opaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_Opaque_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_Opaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint32_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_Opaque_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint32_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB888_Opaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t* const textureBits8, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB888_Opaque_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t* const textureBits8, const int16_t bitmapWidth, const int UInt, const int VInt) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB888_Opaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t* const textureBits8, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint32_t* const destBits, const uint8_t* const textureBits8, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB888_Opaque_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t* const textureBits8, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint32_t* const destBits, const uint8_t* const textureBits8, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ARGB8888_NonOpaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ARGB8888_NonOpaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint32_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_NearestNeighbor_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t a4, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t a4) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_BilinearInterpolation_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint32_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint32_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_LCD32BPP_HPP
 | 
			
		||||
@ -0,0 +1,891 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file platform/driver/lcd/LCD32bpp_XRGB8888.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touchgfx::LCD32bpp_XRGB8888 and touchgfx::LCD32DebugPrinter classes.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_LCD32BPP_XRGB8888_HPP
 | 
			
		||||
#define TOUCHGFX_LCD32BPP_XRGB8888_HPP
 | 
			
		||||
 | 
			
		||||
#include <touchgfx/Bitmap.hpp>
 | 
			
		||||
#include <touchgfx/Color.hpp>
 | 
			
		||||
#include <touchgfx/hal/HAL.hpp>
 | 
			
		||||
#include <touchgfx/hal/Types.hpp>
 | 
			
		||||
#include <touchgfx/lcd/LCD.hpp>
 | 
			
		||||
#include <touchgfx/lcd/LCD32DebugPrinter.hpp>
 | 
			
		||||
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
/**
 | 
			
		||||
 * This class contains the various low-level drawing routines for drawing bitmaps, texts and
 | 
			
		||||
 * rectangles on 16 bits per pixel displays.
 | 
			
		||||
 *
 | 
			
		||||
 * @see LCD
 | 
			
		||||
 *
 | 
			
		||||
 * @note All coordinates are expected to be in absolute coordinates!
 | 
			
		||||
 */
 | 
			
		||||
class LCD32bpp_XRGB8888 : public LCD
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    LCD32bpp_XRGB8888();
 | 
			
		||||
 | 
			
		||||
    virtual void drawPartialBitmap(const Bitmap& bitmap, int16_t x, int16_t y, const Rect& rect, uint8_t alpha = 255, bool useOptimized = true);
 | 
			
		||||
 | 
			
		||||
    virtual void blitCopy(const uint16_t* sourceData, const Rect& source, const Rect& blitRect, uint8_t alpha, bool hasTransparentPixels);
 | 
			
		||||
 | 
			
		||||
    virtual void blitCopy(const uint8_t* sourceData, Bitmap::BitmapFormat sourceFormat, const Rect& source, const Rect& blitRect, uint8_t alpha, bool hasTransparentPixels);
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t* copyFrameBufferRegionToMemory(const Rect& visRegion, const Rect& absRegion, const BitmapId bitmapId);
 | 
			
		||||
 | 
			
		||||
    virtual Rect copyFrameBufferRegionToMemory(const Rect& visRegion, const Rect& absRegion, uint8_t* dst, int16_t dstWidth, int16_t dstHeight);
 | 
			
		||||
 | 
			
		||||
    virtual void copyAreaFromTFTToClientBuffer(const Rect& region);
 | 
			
		||||
 | 
			
		||||
    virtual void fillRect(const Rect& rect, colortype color, uint8_t alpha = 255);
 | 
			
		||||
 | 
			
		||||
    virtual void fillBuffer(uint8_t* const destination, uint16_t pixelStride, const Rect& rect, const colortype color, const uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t bitDepth() const
 | 
			
		||||
    {
 | 
			
		||||
        return 32;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual Bitmap::BitmapFormat framebufferFormat() const
 | 
			
		||||
    {
 | 
			
		||||
        return Bitmap::ARGB8888;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t framebufferStride() const
 | 
			
		||||
    {
 | 
			
		||||
        return getFramebufferStride();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual bool supportDynamicBitmapDrawing(const Bitmap::BitmapFormat /*format*/)
 | 
			
		||||
    {
 | 
			
		||||
        // DynamicBitmap drawing is not supported by LCD32XRGB
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Framebuffer stride in bytes. The distance (in bytes) from the start of one
 | 
			
		||||
     * framebuffer row, to the next.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The number of bytes in one framebuffer row.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint16_t getFramebufferStride()
 | 
			
		||||
    {
 | 
			
		||||
        assert(HAL::FRAME_BUFFER_WIDTH > 0 && "HAL has not been initialized yet");
 | 
			
		||||
        return HAL::FRAME_BUFFER_WIDTH * 4;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets blue from color.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  color The color.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The blue from color.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getBlueFromColor(colortype color)
 | 
			
		||||
    {
 | 
			
		||||
        return color & 0xFF;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for all image formats. This allows drawing any image
 | 
			
		||||
     * using Bilinear Interpolation and Nearest Neighbor algorithms, but might use a lot of
 | 
			
		||||
     * memory for the drawing algorithms.
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperAll();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_RGB565 image format. This allows drawing L8_RGB565
 | 
			
		||||
     * images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_RGB565_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperL8_RGB565_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_RGB565();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_RGB565 image format. This allows drawing L8_RGB565
 | 
			
		||||
     * images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_RGB565, enableTextureMapperL8_RGB565_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_RGB565_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_RGB565 image format. This allows drawing L8_RGB565
 | 
			
		||||
     * images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_RGB565, enableTextureMapperL8_RGB565_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_RGB565_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_RGB888 image format. This allows drawing L8_RGB888
 | 
			
		||||
     * images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_RGB888_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperL8_RGB888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_RGB888();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_RGB888 image format. This allows drawing L8_RGB888
 | 
			
		||||
     * images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_RGB888, enableTextureMapperL8_RGB888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_RGB888_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_RGB888 image format. This allows drawing L8_RGB888
 | 
			
		||||
     * images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_RGB888, enableTextureMapperL8_RGB888_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_RGB888_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_ARGB8888 image format. This allows drawing
 | 
			
		||||
     * L8_ARGB8888 images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_ARGB8888_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperL8_ARGB8888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_ARGB8888();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_ARGB8888 image format. This allows drawing
 | 
			
		||||
     * L8_ARGB8888 images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_ARGB8888, enableTextureMapperL8_ARGB8888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_ARGB8888_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for L8_ARGB8888 image format. This allows drawing
 | 
			
		||||
     * L8_ARGB8888 images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperL8_ARGB8888, enableTextureMapperL8_ARGB8888_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperL8_ARGB8888_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for RGB565 image format. This allows drawing RGB565
 | 
			
		||||
     * images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB565();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for Opaque RGB565 image format. This allows drawing
 | 
			
		||||
     * RGB565 images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGB565, enableTextureMapperRGB565_NonOpaque_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB565_Opaque_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for NonOpaque RGB565 image format. This allows drawing
 | 
			
		||||
     * RGB565 images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGB565, enableTextureMapperRGB565_Opaque_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB565_NonOpaque_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for Opaque RGB565 image format. This allows drawing
 | 
			
		||||
     * RGB565 images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGB565, enableTextureMapperRGB565_NonOpaque_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB565_Opaque_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for NonOpaque RGB565 image format. This allows drawing
 | 
			
		||||
     * RGB565 images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGB565, enableTextureMapperRGB565_Opaque_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB565_NonOpaque_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for RGB888 image format. This allows drawing RGB888
 | 
			
		||||
     * images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGB888_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperRGB888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB888();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for RGB888 image format. This allows drawing RGB888
 | 
			
		||||
     * images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGB888, enableTextureMapperRGB888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB888_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for RGB888 image format. This allows drawing RGB888
 | 
			
		||||
     * images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGB888, enableTextureMapperRGB888_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGB888_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB8888 image format. This allows drawing ARGB8888
 | 
			
		||||
     * images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB8888_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperARGB8888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB8888();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB8888 image format. This allows drawing ARGB8888
 | 
			
		||||
     * images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB8888, enableTextureMapperARGB8888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB8888_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB8888 image format. This allows drawing ARGB8888
 | 
			
		||||
     * images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB8888, enableTextureMapperARGB8888_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB8888_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4_BilinearInterpolation, enableTextureMapperA4_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4, enableTextureMapperA4_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4, enableTextureMapperA4_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Copies the 24bit color (blue, green, red) to the given 32bit destination, setting alpha to
 | 
			
		||||
     * zero.
 | 
			
		||||
     *
 | 
			
		||||
     * @param   rgb888  A pointer to the three bytes.
 | 
			
		||||
     *
 | 
			
		||||
     * @return  The 24bit RGB888 converted to a 32bit color value with zero alpha.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t rgb888toXrgb8888(const uint8_t* const rgb888)
 | 
			
		||||
    {
 | 
			
		||||
        return (rgb888[2] << 16) | (rgb888[1] << 8) | rgb888[0];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Alpha blend R,G,B with the 32bit color given in bgXRGB8888 using the provided fgAlpha (for R,
 | 
			
		||||
     * G,B) and bgAlpha (for bgXRGB8888). The resulting color is returned. address.
 | 
			
		||||
     *
 | 
			
		||||
     * @param   fgR                     The foreground blue.
 | 
			
		||||
     * @param   fgG                     The foreground green.
 | 
			
		||||
     * @param   fgB                     The foreground blue.
 | 
			
		||||
     * @param   bgXRGB8888      The background 32bit color.
 | 
			
		||||
     * @param   fgAlpha         The foreground alpha.
 | 
			
		||||
     * @param   bgAlpha         The background alpha.
 | 
			
		||||
     *
 | 
			
		||||
     * @return  The blended value.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t blendRGBwithXrgb8888(const uint8_t fgR, const uint8_t fgG, const uint8_t fgB, const uint32_t bgXRGB8888, const uint8_t fgAlpha, const uint8_t bgAlpha)
 | 
			
		||||
    {
 | 
			
		||||
        const uint8_t b = div255(fgB * fgAlpha + (bgXRGB8888 & 0xFF) * bgAlpha);
 | 
			
		||||
        const uint8_t g = div255(fgG * fgAlpha + ((bgXRGB8888 >> 8) & 0xFF) * bgAlpha);
 | 
			
		||||
        const uint8_t r = div255(fgR * fgAlpha + ((bgXRGB8888 >> 16) & 0xFF) * bgAlpha);
 | 
			
		||||
        return (r << 16) | (g << 8) | b;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Alpha blend two 32bit colors using the provided fgAlpha (for fgXRGB8888) and bgAlpha (for
 | 
			
		||||
     * bgXRGB8888). The resulting color is returned.
 | 
			
		||||
     *
 | 
			
		||||
     * @param   fgXRGB8888      The foreground 32bit color.
 | 
			
		||||
     * @param   bgXRGB8888      The background 32bit color.
 | 
			
		||||
     * @param   fgAlpha         The foreground alpha.
 | 
			
		||||
     * @param   bgAlpha         The background alpha.
 | 
			
		||||
     *
 | 
			
		||||
     * @return  The blended value.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t blendXrgb888withXrgb8888(const uint32_t fgXRGB8888, const uint32_t bgXRGB8888, const uint8_t fgAlpha, const uint8_t bgAlpha)
 | 
			
		||||
    {
 | 
			
		||||
        return blendRgb888withXrgb8888(reinterpret_cast<const uint8_t*>(&fgXRGB8888), bgXRGB8888, fgAlpha, bgAlpha);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Alpha blend a 24bit RGB888 with the 32bit color given in bgXRGB8888 using the provided
 | 
			
		||||
     * fgAlpha (for fgRGB888) and bgAlpha (for bgXRGB8888). The resulting color is returned. address.
 | 
			
		||||
     *
 | 
			
		||||
     * @param   fgRGB888        A pointer to the foreground 24bit RGB.
 | 
			
		||||
     * @param   bgXRGB8888      The background 32bit color.
 | 
			
		||||
     * @param   fgAlpha         The foreground alpha.
 | 
			
		||||
     * @param   bgAlpha         The background alpha.
 | 
			
		||||
     *
 | 
			
		||||
     * @return  The blended value.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t blendRgb888withXrgb8888(const uint8_t* const fgRGB888, const uint32_t bgXRGB8888, const uint8_t fgAlpha, const uint8_t bgAlpha)
 | 
			
		||||
    {
 | 
			
		||||
        return blendRGBwithXrgb8888(fgRGB888[2], fgRGB888[1], fgRGB888[0], bgXRGB8888, fgAlpha, bgAlpha);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Alpha blend a 16bit RGB565 color with the 32bit color given in bgXRGB8888 using the provided
 | 
			
		||||
     * fgAlpha (for fgRGB565) and bgAlpha (for bgXRGB8888). The resulting color is returned. address.
 | 
			
		||||
     *
 | 
			
		||||
     * @param   fgRGB565        A pointer to the foreground 24bit RGB.
 | 
			
		||||
     * @param   bgXRGB8888      The background 32bit color.
 | 
			
		||||
     * @param   fgAlpha         The foreground alpha.
 | 
			
		||||
     * @param   bgAlpha         The background alpha.
 | 
			
		||||
     *
 | 
			
		||||
     * @return  The blended value.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t blendRgb565withXrgb8888(const uint16_t fgRGB565, const uint32_t bgXRGB8888, const uint8_t fgAlpha, const uint8_t bgAlpha)
 | 
			
		||||
    {
 | 
			
		||||
        const uint8_t r = (fgRGB565 & 0xF800) >> 8;
 | 
			
		||||
        const uint8_t g = (fgRGB565 & 0x07E0) >> 3;
 | 
			
		||||
        const uint8_t b = fgRGB565 << 3;
 | 
			
		||||
        // return blendRGBwithXrgb8888(r, g, b, bgXRGB8888, fgAlpha, bgAlpha);
 | 
			
		||||
        return blendRGBwithXrgb8888(r | (r >> 5), g | (g >> 6), b | (b >> 5), bgXRGB8888, fgAlpha, bgAlpha);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    virtual DrawTextureMapScanLineBase* getTextureMapperDrawScanLine(const TextureSurface& texture, RenderingVariant renderVariant, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Find out how much to advance in the display buffer to get to the next pixel.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  rotatedDisplay Is the display running in portrait mode?
 | 
			
		||||
     * @param  textRotation   Rotation to perform.
 | 
			
		||||
     *
 | 
			
		||||
     * @return How much to advance to get to the next pixel.
 | 
			
		||||
     */
 | 
			
		||||
    static int nextPixel(bool rotatedDisplay, TextRotation textRotation);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Find out how much to advance in the display buffer to get to the next line.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  rotatedDisplay Is the display running in portrait mode?
 | 
			
		||||
     * @param  textRotation   Rotation to perform.
 | 
			
		||||
     *
 | 
			
		||||
     * @return How much to advance to get to the next line.
 | 
			
		||||
     */
 | 
			
		||||
    static int nextLine(bool rotatedDisplay, TextRotation textRotation);
 | 
			
		||||
 | 
			
		||||
    virtual void drawGlyph(uint16_t* wbuf16, Rect widgetArea, int16_t x, int16_t y, uint16_t offsetX, uint16_t offsetY, const Rect& invalidatedArea, const GlyphNode* glyph, const uint8_t* glyphData, uint8_t byteAlignRow, colortype color, uint8_t bitsPerPixel, uint8_t alpha, TextRotation rotation);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D source-array to the framebuffer performing alpha-blending per pixel as
 | 
			
		||||
     * specified. If RGB888 is not supported by the DMA a software blend is performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData16 The source-array pointer (points to the beginning of the data). The
 | 
			
		||||
     *                      sourceData must be stored as 24- bits RGB888 values.
 | 
			
		||||
     * @param  source       The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect     A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha        The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                      solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyRGB888(const uint16_t* sourceData16, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D source-array to the framebuffer performing alpha-blending per pixel as
 | 
			
		||||
     * specified. If! RGB565 is not supported by the DMA a software blend is performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData16 The source-array pointer (points to the beginning of the data). The
 | 
			
		||||
     *                      sourceData must be stored as 16- bits RGB565 values.
 | 
			
		||||
     * @param  source       The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect     A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha        The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                      solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyRGB565(const uint16_t* sourceData16, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D indexed 8-bit source to the framebuffer performing alpha-blending per
 | 
			
		||||
     * pixel as specified if indexed format is not supported by the DMA a software blend is
 | 
			
		||||
     * performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData The source-indexes pointer (points to the beginning of the data). The
 | 
			
		||||
     *                    sourceData must be stored as 8- bits indexes.
 | 
			
		||||
     * @param  clutData   The source-clut pointer (points to the beginning of the CLUT color
 | 
			
		||||
     *                    format and size data followed by colors entries.
 | 
			
		||||
     * @param  source     The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect   A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha      The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                    solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyL8(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D indexed 8-bit source to the framebuffer performing alpha-blending per
 | 
			
		||||
     * pixel as specified if L8_ARGB8888 is not supported by the DMA a software blend is
 | 
			
		||||
     * performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData The source-indexes pointer (points to the beginning of the data). The
 | 
			
		||||
     *                    sourceData must be stored as 8- bits indexes.
 | 
			
		||||
     * @param  clutData   The source-clut pointer (points to the beginning of the CLUT color
 | 
			
		||||
     *                    format and size data followed by colors entries stored as 32-
 | 
			
		||||
     *                    bits (ARGB8888) format.
 | 
			
		||||
     * @param  source     The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect   A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha      The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                    solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyL8_ARGB8888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D indexed 8-bit source to the framebuffer performing alpha-blending per
 | 
			
		||||
     * pixel as specified if L8_RGB888 is not supported by the DMA a software blend is
 | 
			
		||||
     * performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData The source-indexes pointer (points to the beginning of the data). The
 | 
			
		||||
     *                    sourceData must be stored as 8- bits indexes.
 | 
			
		||||
     * @param  clutData   The source-clut pointer (points to the beginning of the CLUT color
 | 
			
		||||
     *                    format and size data followed by colors entries stored as 32-
 | 
			
		||||
     *                    bits (RGB888) format.
 | 
			
		||||
     * @param  source     The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect   A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha      The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                    solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyL8_RGB888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blits a 2D indexed 8-bit source to the framebuffer performing alpha-blending per
 | 
			
		||||
     * pixel as specified if L8_RGB565 is not supported by the DMA a software blend is
 | 
			
		||||
     * performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData The source-indexes pointer (points to the beginning of the data). The
 | 
			
		||||
     *                    sourceData must be stored as 8- bits indexes.
 | 
			
		||||
     * @param  clutData   The source-clut pointer (points to the beginning of the CLUT color
 | 
			
		||||
     *                    format and size data followed by colors entries stored as 16-
 | 
			
		||||
     *                    bits (RGB565) format.
 | 
			
		||||
     * @param  source     The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect   A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha      The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                    solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyL8_RGB565(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB565_Opaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB565_Opaque_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB565_Opaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB565_Opaque_BilinearInterpolation_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB888_Opaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB888_Opaque_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB888_Opaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_RGB888_Opaque_BilinearInterpolation_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_ARGB8888_NonOpaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_L8_ARGB8888_NonOpaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_NonOpaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_NonOpaque_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_Opaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_Opaque_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_NonOpaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_NonOpaque_BilinearInterpolation_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_Opaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB565_Opaque_BilinearInterpolation_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB888_Opaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB888_Opaque_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB888_Opaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGB888_Opaque_BilinearInterpolation_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ARGB8888_NonOpaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ARGB8888_NonOpaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_NearestNeighbor_NoGA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_BilinearInterpolation_NoGA;
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t expandRgb565(uint16_t c)
 | 
			
		||||
    {
 | 
			
		||||
        return ((c & 0x07E0) << 16) | (c & ~0x07E0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint16_t compactRgb565(uint32_t c)
 | 
			
		||||
    {
 | 
			
		||||
        return ((c >> 16) & 0x07E0) | (c & ~0x07E0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint16_t bilinearInterpolate565(uint16_t c00, uint16_t c10, uint16_t c01, uint16_t c11, uint8_t x, uint8_t y)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16 && y < 16);
 | 
			
		||||
        uint32_t a00 = expandRgb565(c00);
 | 
			
		||||
        uint32_t a10 = expandRgb565(c10);
 | 
			
		||||
        uint32_t a01 = expandRgb565(c01);
 | 
			
		||||
        uint32_t a11 = expandRgb565(c11);
 | 
			
		||||
 | 
			
		||||
        uint8_t xy = (x * y) >> 3;
 | 
			
		||||
        return compactRgb565((a00 * (32 - 2 * y - 2 * x + xy) + a10 * (2 * x - xy) + a01 * (2 * y - xy) + a11 * xy) >> 5);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint16_t bilinearInterpolate565(uint16_t c00, uint16_t c10, uint8_t x)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16);
 | 
			
		||||
        uint32_t a00 = expandRgb565(c00);
 | 
			
		||||
        uint32_t a10 = expandRgb565(c10);
 | 
			
		||||
 | 
			
		||||
        return compactRgb565((a00 * (32 - 2 * x) + a10 * (2 * x)) >> 5);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t bilinearInterpolate8(uint8_t c00, uint8_t c10, uint8_t x)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16);
 | 
			
		||||
        uint16_t xy10 = 16 * x;
 | 
			
		||||
        uint16_t xy00 = 256 - xy10;
 | 
			
		||||
 | 
			
		||||
        return (c00 * xy00 + c10 * xy10) >> 8;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t bilinearInterpolate8(uint8_t c00, uint8_t c10, uint8_t c01, uint8_t c11, uint8_t x, uint8_t y)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16 && y < 16);
 | 
			
		||||
        uint16_t xy11 = x * y;
 | 
			
		||||
        uint16_t xy10 = 16 * x - xy11;
 | 
			
		||||
        uint16_t xy01 = 16 * y - xy11;
 | 
			
		||||
        uint16_t xy00 = 256 - (xy11 + xy10 + xy01);
 | 
			
		||||
 | 
			
		||||
        return (c00 * xy00 + c10 * xy10 + c01 * xy01 + c11 * xy11) >> 8;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t bilinearInterpolate888(uint32_t c00, uint32_t c10, uint8_t x)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16);
 | 
			
		||||
        uint16_t xy10 = 16 * x;
 | 
			
		||||
        uint16_t xy00 = 256 - xy10;
 | 
			
		||||
 | 
			
		||||
        return ((((c00 & 0xFF00FF) * xy00 + (c10 & 0xFF00FF) * xy10) >> 8) & 0xFF00FF) |
 | 
			
		||||
               ((((c00 & 0x00FF00) * xy00 + (c10 & 0x00FF00) * xy10) >> 8) & 0x00FF00);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t bilinearInterpolate888(uint32_t c00, uint32_t c10, uint32_t c01, uint32_t c11, uint8_t x, uint8_t y)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16 && y < 16);
 | 
			
		||||
        uint16_t xy11 = x * y;
 | 
			
		||||
        uint16_t xy10 = 16 * x - xy11;
 | 
			
		||||
        uint16_t xy01 = 16 * y - xy11;
 | 
			
		||||
        uint16_t xy00 = 256 - (xy11 + xy10 + xy01);
 | 
			
		||||
 | 
			
		||||
        return ((((c00 & 0xFF00FF) * xy00 + (c10 & 0xFF00FF) * xy10 + (c01 & 0xFF00FF) * xy01 + (c11 & 0xFF00FF) * xy11) >> 8) & 0xFF00FF) |
 | 
			
		||||
               ((((c00 & 0x00FF00) * xy00 + (c10 & 0x00FF00) * xy10 + (c01 & 0x00FF00) * xy01 + (c11 & 0x00FF00) * xy11) >> 8) & 0x00FF00);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div255_888(uint32_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        return div255rb((val & 0xFF00FF) * factor) | div255g((val & 0x00FF00) * factor);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div255_888_FFcheck(uint32_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        return factor < 0xFF ? div255_888(val, factor) : val;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    class DrawTextureMapScanLineBase32 : public DrawTextureMapScanLineBase
 | 
			
		||||
    {
 | 
			
		||||
    protected:
 | 
			
		||||
        FORCE_INLINE_FUNCTION bool overrunCheckNearestNeighbor(uint32_t*& destBits, int& pixelsToDraw, fixed16_16& U, fixed16_16& V, fixed16_16 deltaU, fixed16_16 deltaV, const int16_t maxWidth, const int16_t maxHeight) const;
 | 
			
		||||
        FORCE_INLINE_FUNCTION bool overrunCheckBilinearInterpolation(uint32_t*& destBits, int& pixelsToDraw, fixed16_16& U, fixed16_16& V, fixed16_16 deltaU, fixed16_16 deltaV, const int16_t maxWidth, const int16_t maxHeight) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB565_Opaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t* const textureBits8, const uint16_t* const palette16, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB565_Opaque_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t* const textureBits8, const uint16_t* const palette16, const int16_t bitmapWidth, const int UInt, const int VInt) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB565_Opaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t* const textureBits8, const uint16_t* const palette16, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint32_t* const destBits, const uint8_t* const textureBits8, const uint16_t* const palette16, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB565_Opaque_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t* const textureBits8, const uint16_t* const palette16, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint32_t* const destBits, const uint8_t* const textureBits8, const uint16_t* const palette16, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB888_Opaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t* const textureBits8, const uint8_t* const palette8, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB888_Opaque_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t* const textureBits8, const uint8_t* const palette8, const int16_t bitmapWidth, const int UInt, const int VInt) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB888_Opaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t* const textureBits8, const uint8_t* const palette8, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint32_t* const destBits, const uint8_t* const textureBits8, const uint8_t* const palette8, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_RGB888_Opaque_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t* const textureBits8, const uint8_t* const palette8, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint32_t* const destBits, const uint8_t* const textureBits8, const uint8_t* const palette8, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_ARGB8888_NonOpaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t* const textureBits8, const uint32_t* const palette32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_L8_ARGB8888_NonOpaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t* const textureBits8, const uint32_t* const palette32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint32_t* const destBits, const uint8_t* const textureBits8, const uint32_t* const palette32, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_NonOpaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint16_t* const textureBits, const uint8_t* alphaBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_NonOpaque_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint16_t* const textureBits, const uint8_t* alphaBits, const int16_t bitmapWidth, const int UInt, const int VInt) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_NonOpaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint16_t* const textureBits, const uint8_t* alphaBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint32_t* const destBits, const uint16_t* const textureBits, const uint8_t* alphaBits, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_NonOpaque_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint16_t* const textureBits, const uint8_t* alphaBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint32_t* const destBits, const uint16_t* const textureBits, const uint8_t* alphaBits, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_Opaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_Opaque_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_Opaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint32_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB565_Opaque_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint32_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB888_Opaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t* const textureBits8, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB888_Opaque_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t* const textureBits8, const int16_t bitmapWidth, const int UInt, const int VInt) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB888_Opaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t* const textureBits8, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint32_t* const destBits, const uint8_t* const textureBits8, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGB888_Opaque_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t* const textureBits8, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint32_t* const destBits, const uint8_t* const textureBits8, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ARGB8888_NonOpaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ARGB8888_NonOpaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint32_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_NearestNeighbor_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t a4, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_NearestNeighbor_NoGA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint8_t a4) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_BilinearInterpolation_GA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint32_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_BilinearInterpolation_NoGA : public DrawTextureMapScanLineBase32
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
        void writePixelOnEdge(uint32_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
 | 
			
		||||
    };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_LCD32BPP_XRGB8888_HPP
 | 
			
		||||
@ -0,0 +1,393 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file platform/driver/lcd/LCD4bpp.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touchgfx::LCD4bpp class.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_LCD4BPP_HPP
 | 
			
		||||
#define TOUCHGFX_LCD4BPP_HPP
 | 
			
		||||
 | 
			
		||||
#include <touchgfx/Bitmap.hpp>
 | 
			
		||||
#include <touchgfx/Color.hpp>
 | 
			
		||||
#include <touchgfx/hal/HAL.hpp>
 | 
			
		||||
#include <touchgfx/hal/Types.hpp>
 | 
			
		||||
#include <touchgfx/lcd/LCD.hpp>
 | 
			
		||||
#include <touchgfx/lcd/LCD4DebugPrinter.hpp>
 | 
			
		||||
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
#define USE_LSB
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * This class contains the various low-level drawing routines for drawing bitmaps, texts and
 | 
			
		||||
 * rectangles on 4 bits per pixel grayscale displays.
 | 
			
		||||
 *
 | 
			
		||||
 * @see LCD
 | 
			
		||||
 *
 | 
			
		||||
 * @note All coordinates are expected to be in absolute coordinates!
 | 
			
		||||
 */
 | 
			
		||||
class LCD4bpp : public LCD
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    LCD4bpp();
 | 
			
		||||
 | 
			
		||||
    virtual void drawPartialBitmap(const Bitmap& bitmap, int16_t x, int16_t y, const Rect& rect, uint8_t alpha = 255, bool useOptimized = true);
 | 
			
		||||
 | 
			
		||||
    virtual void blitCopy(const uint16_t* sourceData, const Rect& source, const Rect& blitRect, uint8_t alpha, bool hasTransparentPixels);
 | 
			
		||||
 | 
			
		||||
    virtual void blitCopy(const uint8_t* sourceData, Bitmap::BitmapFormat sourceFormat, const Rect& source, const Rect& blitRect, uint8_t alpha, bool hasTransparentPixels);
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t* copyFrameBufferRegionToMemory(const Rect& visRegion, const Rect& absRegion, const BitmapId bitmapId);
 | 
			
		||||
 | 
			
		||||
    virtual Rect copyFrameBufferRegionToMemory(const Rect& visRegion, const Rect& absRegion, uint8_t* dst, int16_t dstWidth, int16_t dstHeight);
 | 
			
		||||
 | 
			
		||||
    virtual void copyAreaFromTFTToClientBuffer(const Rect& region);
 | 
			
		||||
 | 
			
		||||
    virtual void fillRect(const Rect& rect, colortype color, uint8_t alpha = 255);
 | 
			
		||||
 | 
			
		||||
    virtual void fillBuffer(uint8_t* const destination, uint16_t pixelStride, const Rect& rect, const colortype color, const uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t bitDepth() const
 | 
			
		||||
    {
 | 
			
		||||
        return 4;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual Bitmap::BitmapFormat framebufferFormat() const
 | 
			
		||||
    {
 | 
			
		||||
        return Bitmap::GRAY4;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t framebufferStride() const
 | 
			
		||||
    {
 | 
			
		||||
        return getFramebufferStride();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual void setDefaultColor(colortype color)
 | 
			
		||||
    {
 | 
			
		||||
        LCD::setDefaultColor(color);
 | 
			
		||||
        defaultColor4 = getNativeColor(color);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Framebuffer stride in bytes. The distance (in bytes) from the start of one
 | 
			
		||||
     * framebuffer row, to the next.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The number of bytes in one framebuffer row.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint16_t getFramebufferStride()
 | 
			
		||||
    {
 | 
			
		||||
        assert(HAL::FRAME_BUFFER_WIDTH > 0 && "HAL has not been initialized yet");
 | 
			
		||||
        return (HAL::FRAME_BUFFER_WIDTH + 1) / 2;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Generates a color representation to be used on the LCD, based on 24 bit RGB values.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  red   Value of the red part (0-255).
 | 
			
		||||
     * @param  green Value of the green part (0-255).
 | 
			
		||||
     * @param  blue  Value of the blue part (0-255).
 | 
			
		||||
     *
 | 
			
		||||
     * @return The color representation depending on LCD color format.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getNativeColorFromRGB(uint8_t red, uint8_t green, uint8_t blue)
 | 
			
		||||
    {
 | 
			
		||||
        // Find the GRAY value (http://en.wikipedia.org/wiki/Luma_%28video%29) rounded to nearest integer
 | 
			
		||||
        return (red * 54 + green * 183 + blue * 19) >> 12;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Generates a color representation to be used on the LCD, based on 24 bit RGB values.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  color The color.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The color representation depending on LCD color format.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getNativeColor(colortype color)
 | 
			
		||||
    {
 | 
			
		||||
        return getNativeColorFromRGB(Color::getRed(color), Color::getGreen(color), Color::getBlue(color));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for all image formats. This allows drawing any image
 | 
			
		||||
     * using Bilinear Interpolation and Nearest Neighbor algorithms, but might use a lot of
 | 
			
		||||
     * memory for the drawing algorithms.
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperAll();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for GRAY4 image format. This allows drawing GRAY4 images
 | 
			
		||||
     * using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperGRAY4_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperGRAY4_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperGRAY4();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for GRAY4 image format. This allows drawing GRAY4 images
 | 
			
		||||
     * using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperGRAY4, enableTextureMapperGRAY4_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperGRAY4_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for GRAY4 image format. This allows drawing GRAY4 images
 | 
			
		||||
     * using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperGRAY4, enableTextureMapperGRAY4_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperGRAY4_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4_BilinearInterpolation, enableTextureMapperA4_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4, enableTextureMapperA4_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4, enableTextureMapperA4_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Get pixel from buffer/image.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  addr   The address.
 | 
			
		||||
     * @param  offset The offset.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The pixel value.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getPixel(const uint8_t* addr, int offset)
 | 
			
		||||
    {
 | 
			
		||||
        uint8_t data = addr[offset / 2];
 | 
			
		||||
#ifdef USE_LSB
 | 
			
		||||
        return (offset & 1) ? data >> 4 : data & 0xF;
 | 
			
		||||
#else
 | 
			
		||||
        return (offset & 1) ? data & 0xF : data >> 4;
 | 
			
		||||
#endif
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Get pixel from buffer/image.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  addr   The address.
 | 
			
		||||
     * @param  offset The offset.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The pixel value.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getPixel(const uint16_t* addr, int offset)
 | 
			
		||||
    {
 | 
			
		||||
        return getPixel(reinterpret_cast<const uint8_t*>(addr), offset);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Set pixel in buffer.
 | 
			
		||||
     *
 | 
			
		||||
     * @param [in] addr   The address.
 | 
			
		||||
     * @param      offset The offset.
 | 
			
		||||
     * @param      value  The value.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static void setPixel(uint8_t* addr, int offset, uint8_t value)
 | 
			
		||||
    {
 | 
			
		||||
        uint8_t data = addr[offset / 2];
 | 
			
		||||
#ifdef USE_LSB
 | 
			
		||||
        addr[offset / 2] = (offset & 1) ? (data & 0x0F) | (value << 4) : (data & 0xF0) | value;
 | 
			
		||||
#else
 | 
			
		||||
        addr[offset / 2] = (offset & 1) ? (data & 0xF0) | value : (data & 0x0F) | (value << 4);
 | 
			
		||||
#endif
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Set pixel in buffer.
 | 
			
		||||
     *
 | 
			
		||||
     * @param [in] addr   The address.
 | 
			
		||||
     * @param      offset The offset.
 | 
			
		||||
     * @param      value  The value.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static void setPixel(uint16_t* addr, int offset, uint8_t value)
 | 
			
		||||
    {
 | 
			
		||||
        setPixel(reinterpret_cast<uint8_t*>(addr), offset, value);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    static uint8_t defaultColor4; ///< Default Color to use when displaying transparency-only elements, e.g. A4 bitmaps
 | 
			
		||||
 | 
			
		||||
    virtual DrawTextureMapScanLineBase* getTextureMapperDrawScanLine(const TextureSurface& texture, RenderingVariant renderVariant, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Find out how much to advance in the display buffer to get to the next pixel.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  rotatedDisplay Is the display running in portrait mode?
 | 
			
		||||
     * @param  textRotation   Rotation to perform.
 | 
			
		||||
     *
 | 
			
		||||
     * @return How much to advance to get to the next pixel.
 | 
			
		||||
     */
 | 
			
		||||
    static int nextPixel(bool rotatedDisplay, TextRotation textRotation);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Find out how much to advance in the display buffer to get to the next line.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  rotatedDisplay Is the display running in portrait mode?
 | 
			
		||||
     * @param  textRotation   Rotation to perform.
 | 
			
		||||
     *
 | 
			
		||||
     * @return How much to advance to get to the next line.
 | 
			
		||||
     */
 | 
			
		||||
    static int nextLine(bool rotatedDisplay, TextRotation textRotation);
 | 
			
		||||
 | 
			
		||||
    virtual void drawGlyph(uint16_t* wbuf16, Rect widgetArea, int16_t x, int16_t y, uint16_t offsetX, uint16_t offsetY, const Rect& invalidatedArea, const GlyphNode* glyph, const uint8_t* glyphData, uint8_t byteAlignRow, colortype color, uint8_t bitsPerPixel, uint8_t alpha, TextRotation rotation);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blit a 2D source-array to the framebuffer performing alpha-blending per pixel as
 | 
			
		||||
     * specified Performs always a software blend.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData16    The source-array pointer (points to the beginning of the
 | 
			
		||||
     *                         data). The sourceData must be stored as 4bpp GRAY4 values.
 | 
			
		||||
     * @param  sourceAlphaData The alpha channel array pointer (points to the beginning of
 | 
			
		||||
     *                         the data)
 | 
			
		||||
     * @param  source          The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect        A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha           The alpha value to use for blending applied to the whole
 | 
			
		||||
     *                         image (255 = solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyAlphaPerPixel(const uint16_t* sourceData16, const uint8_t* sourceAlphaData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Copies a rectangular area.
 | 
			
		||||
     *
 | 
			
		||||
     * @param      srcAddress     Source address (byte address).
 | 
			
		||||
     * @param      srcStride      Source stride (number of bytes to advance to next line).
 | 
			
		||||
     * @param      srcPixelOffset Source pixel offset (first pixel in first source byte).
 | 
			
		||||
     * @param [in] dstAddress     If destination address (byte address).
 | 
			
		||||
     * @param      dstStride      Destination stride (number of bytes to advance to next line).
 | 
			
		||||
     * @param      dstPixelOffset Destination pixel offset (first pixel in destination byte).
 | 
			
		||||
     * @param      width          The width of area (in pixels).
 | 
			
		||||
     * @param      height         The height of area (in pixels).
 | 
			
		||||
     */
 | 
			
		||||
    void copyRect(const uint8_t* srcAddress, uint16_t srcStride, uint8_t srcPixelOffset, uint8_t* RESTRICT dstAddress, uint16_t dstStride, uint8_t dstPixelOffset, uint16_t width, uint16_t height) const;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_GRAY4_NonOpaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_GRAY4_Opaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_GRAY4_NonOpaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_GRAY4_Opaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_BilinearInterpolation_GA;
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t bilinearInterpolate8(uint8_t c00, uint8_t c10, uint8_t x)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16);
 | 
			
		||||
        uint16_t xy10 = 16 * x;
 | 
			
		||||
        uint16_t xy00 = 256 - xy10;
 | 
			
		||||
 | 
			
		||||
        return (c00 * xy00 + c10 * xy10) >> 8;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t bilinearInterpolate8(uint8_t c00, uint8_t c10, uint8_t c01, uint8_t c11, uint8_t x, uint8_t y)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16 && y < 16);
 | 
			
		||||
        uint16_t xy11 = x * y;
 | 
			
		||||
        uint16_t xy10 = 16 * x - xy11;
 | 
			
		||||
        uint16_t xy01 = 16 * y - xy11;
 | 
			
		||||
        uint16_t xy00 = 256 - (xy11 + xy10 + xy01);
 | 
			
		||||
 | 
			
		||||
        return (c00 * xy00 + c10 * xy10 + c01 * xy01 + c11 * xy11) >> 8;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t div255_4(uint16_t value)
 | 
			
		||||
    {
 | 
			
		||||
        return div255(value * 0x11) >> 4;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    class DrawTextureMapScanLineBase4 : public DrawTextureMapScanLineBase
 | 
			
		||||
    {
 | 
			
		||||
    protected:
 | 
			
		||||
        FORCE_INLINE_FUNCTION bool overrunCheckBilinearInterpolation(uint32_t& destOffset, int& pixelsToDraw, fixed16_16& U, fixed16_16& V, fixed16_16 deltaU, fixed16_16 deltaV, const int16_t maxWidth, const int16_t maxHeight) const;
 | 
			
		||||
        FORCE_INLINE_FUNCTION bool overrunCheckNearestNeighbor(uint32_t& destOffset, int& pixelsToDraw, fixed16_16& U, fixed16_16& V, fixed16_16 deltaU, fixed16_16 deltaV, const int16_t maxWidth, const int16_t maxHeight) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_GRAY4_NonOpaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase4
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* destAddress, const uint32_t destOffset, const uint16_t* const textureBits, const uint8_t* const alphaBits, const int16_t bitmapStride, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* destAddress, const uint32_t destOffset, const uint16_t* const textureBits, const uint8_t* const alphaBits, const int16_t bitmapStride, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_GRAY4_Opaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase4
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* destAddress, const uint32_t destOffset, const uint16_t* const textureBits, const int16_t bitmapStride, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* destAddress, const uint32_t destOffset, const uint16_t* const textureBits, const int16_t bitmapStride, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_GRAY4_NonOpaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase4
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* destAddress, const uint32_t destOffset, const uint16_t* const textureBits, const uint8_t* const alphaBits, const int16_t bitmapStride, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_GRAY4_Opaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase4
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* destAddress, const uint32_t destOffset, const uint16_t* const textureBits, const int16_t bitmapStride, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_NearestNeighbor_GA : public DrawTextureMapScanLineBase4
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destAddress, const uint32_t destOffset, const uint8_t a4, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_BilinearInterpolation_GA : public DrawTextureMapScanLineBase4
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destAddress, const uint32_t destOffset, const uint16_t* const textureBits, const int16_t bitmapStride, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint16_t* const destAddress, const uint32_t destOffset, const uint16_t* const textureBits, const uint16_t bitmapStride, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_LCD4BPP_HPP
 | 
			
		||||
@ -0,0 +1,450 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file platform/driver/lcd/LCD8bpp_ABGR2222.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touchgfx::LCD8bpp_ABGR2222 class.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_LCD8BPP_ABGR2222_HPP
 | 
			
		||||
#define TOUCHGFX_LCD8BPP_ABGR2222_HPP
 | 
			
		||||
 | 
			
		||||
#include <touchgfx/Bitmap.hpp>
 | 
			
		||||
#include <touchgfx/hal/HAL.hpp>
 | 
			
		||||
#include <touchgfx/hal/Types.hpp>
 | 
			
		||||
#include <touchgfx/lcd/LCD.hpp>
 | 
			
		||||
#include <touchgfx/lcd/LCD8ABGR2222DebugPrinter.hpp>
 | 
			
		||||
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
/**
 | 
			
		||||
 * This class contains the various low-level drawing routines for drawing bitmaps, texts and
 | 
			
		||||
 * rectangles on 16 bits per pixel displays.
 | 
			
		||||
 *
 | 
			
		||||
 * @see LCD
 | 
			
		||||
 *
 | 
			
		||||
 * @note All coordinates are expected to be in absolute coordinates!
 | 
			
		||||
 */
 | 
			
		||||
class LCD8bpp_ABGR2222 : public LCD
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    LCD8bpp_ABGR2222();
 | 
			
		||||
 | 
			
		||||
    virtual void drawPartialBitmap(const Bitmap& bitmap, int16_t x, int16_t y, const Rect& rect, uint8_t alpha = 255, bool useOptimized = true);
 | 
			
		||||
 | 
			
		||||
    virtual void blitCopy(const uint16_t* sourceData, const Rect& source, const Rect& blitRect, uint8_t alpha, bool hasTransparentPixels);
 | 
			
		||||
 | 
			
		||||
    virtual void blitCopy(const uint8_t* sourceData, Bitmap::BitmapFormat sourceFormat, const Rect& source, const Rect& blitRect, uint8_t alpha, bool hasTransparentPixels);
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t* copyFrameBufferRegionToMemory(const Rect& visRegion, const Rect& absRegion, const BitmapId bitmapId);
 | 
			
		||||
 | 
			
		||||
    virtual Rect copyFrameBufferRegionToMemory(const Rect& visRegion, const Rect& absRegion, uint8_t* dst, int16_t dstWidth, int16_t dstHeight);
 | 
			
		||||
 | 
			
		||||
    virtual void copyAreaFromTFTToClientBuffer(const Rect& region);
 | 
			
		||||
 | 
			
		||||
    virtual void fillRect(const Rect& rect, colortype color, uint8_t alpha = 255);
 | 
			
		||||
 | 
			
		||||
    virtual void fillBuffer(uint8_t* const destination, uint16_t pixelStride, const Rect& rect, const colortype color, const uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t bitDepth() const
 | 
			
		||||
    {
 | 
			
		||||
        return 8;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual Bitmap::BitmapFormat framebufferFormat() const
 | 
			
		||||
    {
 | 
			
		||||
        return Bitmap::ABGR2222;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t framebufferStride() const
 | 
			
		||||
    {
 | 
			
		||||
        return getFramebufferStride();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Framebuffer stride in bytes. The distance (in bytes) from the start of one
 | 
			
		||||
     * framebuffer row, to the next.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The number of bytes in one framebuffer row.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint16_t getFramebufferStride()
 | 
			
		||||
    {
 | 
			
		||||
        assert(HAL::FRAME_BUFFER_WIDTH > 0 && "HAL has not been initialized yet");
 | 
			
		||||
        return HAL::FRAME_BUFFER_WIDTH;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets color from RGB.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  red   The red.
 | 
			
		||||
     * @param  green The green.
 | 
			
		||||
     * @param  blue  The blue.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The color from RGB.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getNativeColorFromRGB(uint8_t red, uint8_t green, uint8_t blue)
 | 
			
		||||
    {
 | 
			
		||||
        return 0xC0 | ((blue & 0xC0) >> 2) | ((green & 0xC0) >> 4) | ((red & 0xC0) >> 6);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Generates a color representation to be used on the LCD, based on 24 bit RGB values.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  color The color.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The color representation depending on LCD color format.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getNativeColor(colortype color)
 | 
			
		||||
    {
 | 
			
		||||
        return 0xC0 | ((color >> 22) & 0x03) | ((color >> 12) & 0x0C) | ((color >> 2) & 0x30);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets red from color.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  color The color.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The red from color.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getRedFromNativeColor(uint8_t color)
 | 
			
		||||
    {
 | 
			
		||||
        return (color & 0x03) * 0x55;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets green from color.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  color The color.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The green from color.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getGreenFromNativeColor(uint8_t color)
 | 
			
		||||
    {
 | 
			
		||||
        return ((color >> 2) & 0x03) * 0x55;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets blue from color.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  color The color.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The blue from color.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getBlueFromNativeColor(uint8_t color)
 | 
			
		||||
    {
 | 
			
		||||
        return ((color >> 4) & 0x03) * 0x55;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets alpha from color.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  color The color.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The alpha from color.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getAlphaFromNativeColor(uint8_t color)
 | 
			
		||||
    {
 | 
			
		||||
        return ((color >> 6) & 0x03) * 0x55;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for all image formats. This allows drawing any image
 | 
			
		||||
     * using Bilinear Interpolation and Nearest Neighbor algorithms, but might use a lot of
 | 
			
		||||
     * memory for the drawing algorithms.
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperAll();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ABGR2222 image format. This allows drawing ABGR2222
 | 
			
		||||
     * images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperABGR2222_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperABGR2222_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperABGR2222();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ABGR2222 image format. This allows drawing ABGR2222
 | 
			
		||||
     * images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperABGR2222, enableTextureMapperABGR2222_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperABGR2222_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ABGR2222 image format. This allows drawing ABGR2222
 | 
			
		||||
     * images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperABGR2222, enableTextureMapperABGR2222_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperABGR2222_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB8888 image format. This allows drawing ARGB8888
 | 
			
		||||
     * images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB8888_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperARGB8888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB8888();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB8888 image format. This allows drawing ARGB8888
 | 
			
		||||
     * images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB8888, enableTextureMapperARGB8888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB8888_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB8888 image format. This allows drawing ARGB8888
 | 
			
		||||
     * images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB8888, enableTextureMapperARGB8888_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB8888_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4_BilinearInterpolation, enableTextureMapperA4_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4, enableTextureMapperA4_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4, enableTextureMapperA4_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    virtual DrawTextureMapScanLineBase* getTextureMapperDrawScanLine(const TextureSurface& texture, RenderingVariant renderVariant, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Find out how much to advance in the display buffer to get to the next pixel.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  rotatedDisplay Is the display running in portrait mode?
 | 
			
		||||
     * @param  textRotation   Rotation to perform.
 | 
			
		||||
     *
 | 
			
		||||
     * @return How much to advance to get to the next pixel.
 | 
			
		||||
     */
 | 
			
		||||
    static int nextPixel(bool rotatedDisplay, TextRotation textRotation);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Find out how much to advance in the display buffer to get to the next line.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  rotatedDisplay Is the display running in portrait mode?
 | 
			
		||||
     * @param  textRotation   Rotation to perform.
 | 
			
		||||
     *
 | 
			
		||||
     * @return How much to advance to get to the next line.
 | 
			
		||||
     */
 | 
			
		||||
    static int nextLine(bool rotatedDisplay, TextRotation textRotation);
 | 
			
		||||
 | 
			
		||||
    virtual void drawGlyph(uint16_t* wbuf16, Rect widgetArea, int16_t x, int16_t y, uint16_t offsetX, uint16_t offsetY, const Rect& invalidatedArea, const GlyphNode* glyph, const uint8_t* glyphData, uint8_t byteAlignRow, colortype color, uint8_t bitsPerPixel, uint8_t alpha, TextRotation rotation);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blit a 2D source-array to the framebuffer performing alpha-blending per pixel as
 | 
			
		||||
     * specified if ARGB8888 is not supported by the DMA a software blend is performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData The source-array pointer (points to the beginning of the data). The
 | 
			
		||||
     *                    sourceData must be stored as 32- bits ARGB8888 values.
 | 
			
		||||
     * @param  source     The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect   A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha      The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                    solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyARGB8888(const uint32_t* sourceData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blit a 2D source-array to the framebuffer performing alpha-blending per pixel as
 | 
			
		||||
     * specified Performs always a software blend.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData16 The source-array pointer (points to the beginning of the data). The
 | 
			
		||||
     *                      sourceData must be stored as 8-bits ABGR2222 values.
 | 
			
		||||
     * @param  source       The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect     A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha        The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                      solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyAlphaPerPixel(const uint16_t* sourceData16, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ABGR2222_NonOpaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ABGR2222_Opaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ABGR2222_NonOpaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ABGR2222_Opaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ARGB8888_NonOpaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ARGB8888_NonOpaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_BilinearInterpolation_GA;
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t bilinearInterpolate8(uint8_t c00, uint8_t c10, uint8_t x)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16);
 | 
			
		||||
        const uint16_t xy10 = 16 * x;
 | 
			
		||||
        const uint16_t xy00 = 256 - xy10;
 | 
			
		||||
 | 
			
		||||
        return (c00 * xy00 + c10 * xy10) >> 8;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t bilinearInterpolate8(uint8_t c00, uint8_t c10, uint8_t c01, uint8_t c11, uint8_t x, uint8_t y)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16 && y < 16);
 | 
			
		||||
        const uint16_t xy11 = x * y;
 | 
			
		||||
        const uint16_t xy10 = 16 * x - xy11;
 | 
			
		||||
        const uint16_t xy01 = 16 * y - xy11;
 | 
			
		||||
        const uint16_t xy00 = 256 - (xy11 + xy10 + xy01);
 | 
			
		||||
 | 
			
		||||
        return (c00 * xy00 + c10 * xy10 + c01 * xy01 + c11 * xy11) >> 8;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION uint32_t convertABGR2222toARGB8888(colortype col) const
 | 
			
		||||
    {
 | 
			
		||||
        return (((col & 0xC0) << 18) | ((col & 0x03) << 16) | ((col & 0x0C) << 6) | ((col & 0x30) >> 4)) * 0x55;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t convertABGR2222toRGB888(uint8_t val)
 | 
			
		||||
    {
 | 
			
		||||
        return (((val & 0x03) << 16) | ((val & 0x0C) << 6) | ((val & 0x30) >> 4)) * 0x55;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t convertRGB888toXBGR2222(uint32_t val)
 | 
			
		||||
    {
 | 
			
		||||
        val &= 0xC0C0C0;
 | 
			
		||||
        return (val >> 2) | (val >> 12) | (val >> 22);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t bilinearInterpolate888(uint32_t c00, uint32_t c10, uint32_t c01, uint32_t c11, uint8_t x, uint8_t y)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16 && y < 16);
 | 
			
		||||
        const uint16_t xy11 = x * y;
 | 
			
		||||
        const uint16_t xy10 = 16 * x - xy11;
 | 
			
		||||
        const uint16_t xy01 = 16 * y - xy11;
 | 
			
		||||
        const uint16_t xy00 = 256 - (xy11 + xy10 + xy01);
 | 
			
		||||
 | 
			
		||||
        return ((((c00 & 0xFF00FF) * xy00 + (c10 & 0xFF00FF) * xy10 + (c01 & 0xFF00FF) * xy01 + (c11 & 0xFF00FF) * xy11) >> 8) & 0xFF00FF) |
 | 
			
		||||
               ((((c00 & 0x00FF00) * xy00 + (c10 & 0x00FF00) * xy10 + (c01 & 0x00FF00) * xy01 + (c11 & 0x00FF00) * xy11) >> 8) & 0x00FF00);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div255_888(uint32_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        return div255rb((val & 0xFF00FF) * factor) | div255g((val & 0x00FF00) * factor);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div255_888_FFcheck(uint32_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        return factor < 0xFF ? div255_888(val, factor) : val;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t alphaBlend(const uint8_t r, const uint8_t g, const uint8_t b, const uint8_t alpha, const uint8_t fbr, const uint8_t fbg, const uint8_t fbb, const uint8_t ialpha)
 | 
			
		||||
    {
 | 
			
		||||
        return getNativeColorFromRGB(div255(r * alpha + fbr * ialpha), div255(g * alpha + fbg * ialpha), div255(b * alpha + fbb * ialpha));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    class DrawTextureMapScanLineBase8 : public DrawTextureMapScanLineBase
 | 
			
		||||
    {
 | 
			
		||||
    protected:
 | 
			
		||||
        FORCE_INLINE_FUNCTION bool overrunCheckNearestNeighbor(uint8_t*& destBits, int& pixelsToDraw, fixed16_16& U, fixed16_16& V, fixed16_16 deltaU, fixed16_16 deltaV, const int16_t maxWidth, const int16_t maxHeight) const;
 | 
			
		||||
        FORCE_INLINE_FUNCTION bool overrunCheckBilinearInterpolation(uint8_t*& destBits, int& pixelsToDraw, fixed16_16& U, fixed16_16& V, fixed16_16 deltaU, fixed16_16 deltaV, const int16_t maxWidth, const int16_t maxHeight) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ABGR2222_NonOpaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ABGR2222_Opaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ABGR2222_NonOpaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint8_t* const destBits, const uint8_t* const textureBits, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ABGR2222_Opaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint8_t* const destBits, const uint8_t* const textureBits, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ARGB8888_NonOpaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ARGB8888_NonOpaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint8_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_NearestNeighbor_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t a4, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_BilinearInterpolation_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint8_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_LCD8BPP_ABGR2222_HPP
 | 
			
		||||
@ -0,0 +1,450 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file platform/driver/lcd/LCD8bpp_ARGB2222.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touchgfx::LCD8bpp_ARGB2222 class.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_LCD8BPP_ARGB2222_HPP
 | 
			
		||||
#define TOUCHGFX_LCD8BPP_ARGB2222_HPP
 | 
			
		||||
 | 
			
		||||
#include <touchgfx/Bitmap.hpp>
 | 
			
		||||
#include <touchgfx/hal/HAL.hpp>
 | 
			
		||||
#include <touchgfx/hal/Types.hpp>
 | 
			
		||||
#include <touchgfx/lcd/LCD.hpp>
 | 
			
		||||
#include <touchgfx/lcd/LCD8ARGB2222DebugPrinter.hpp>
 | 
			
		||||
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
/**
 | 
			
		||||
 * This class contains the various low-level drawing routines for drawing bitmaps, texts and
 | 
			
		||||
 * rectangles on 16 bits per pixel displays.
 | 
			
		||||
 *
 | 
			
		||||
 * @see LCD
 | 
			
		||||
 *
 | 
			
		||||
 * @note All coordinates are expected to be in absolute coordinates!
 | 
			
		||||
 */
 | 
			
		||||
class LCD8bpp_ARGB2222 : public LCD
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    LCD8bpp_ARGB2222();
 | 
			
		||||
 | 
			
		||||
    virtual void drawPartialBitmap(const Bitmap& bitmap, int16_t x, int16_t y, const Rect& rect, uint8_t alpha = 255, bool useOptimized = true);
 | 
			
		||||
 | 
			
		||||
    virtual void blitCopy(const uint16_t* sourceData, const Rect& source, const Rect& blitRect, uint8_t alpha, bool hasTransparentPixels);
 | 
			
		||||
 | 
			
		||||
    virtual void blitCopy(const uint8_t* sourceData, Bitmap::BitmapFormat sourceFormat, const Rect& source, const Rect& blitRect, uint8_t alpha, bool hasTransparentPixels);
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t* copyFrameBufferRegionToMemory(const Rect& visRegion, const Rect& absRegion, const BitmapId bitmapId);
 | 
			
		||||
 | 
			
		||||
    virtual Rect copyFrameBufferRegionToMemory(const Rect& visRegion, const Rect& absRegion, uint8_t* dst, int16_t dstWidth, int16_t dstHeight);
 | 
			
		||||
 | 
			
		||||
    virtual void copyAreaFromTFTToClientBuffer(const Rect& region);
 | 
			
		||||
 | 
			
		||||
    virtual void fillRect(const Rect& rect, colortype color, uint8_t alpha = 255);
 | 
			
		||||
 | 
			
		||||
    virtual void fillBuffer(uint8_t* const destination, uint16_t pixelStride, const Rect& rect, const colortype color, const uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t bitDepth() const
 | 
			
		||||
    {
 | 
			
		||||
        return 8;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual Bitmap::BitmapFormat framebufferFormat() const
 | 
			
		||||
    {
 | 
			
		||||
        return Bitmap::ARGB2222;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t framebufferStride() const
 | 
			
		||||
    {
 | 
			
		||||
        return getFramebufferStride();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Framebuffer stride in bytes. The distance (in bytes) from the start of one
 | 
			
		||||
     * framebuffer row, to the next.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The number of bytes in one framebuffer row.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint16_t getFramebufferStride()
 | 
			
		||||
    {
 | 
			
		||||
        assert(HAL::FRAME_BUFFER_WIDTH > 0 && "HAL has not been initialized yet");
 | 
			
		||||
        return HAL::FRAME_BUFFER_WIDTH;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets color from RGB.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  red   The red.
 | 
			
		||||
     * @param  green The green.
 | 
			
		||||
     * @param  blue  The blue.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The color from RGB.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getNativeColorFromRGB(uint8_t red, uint8_t green, uint8_t blue)
 | 
			
		||||
    {
 | 
			
		||||
        return 0xC0 | ((red & 0xC0) >> 2) | ((green & 0xC0) >> 4) | ((blue & 0xC0) >> 6);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Generates a color representation to be used on the LCD, based on 24 bit RGB values.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  color The color.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The color representation depending on LCD color format.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getNativeColor(colortype color)
 | 
			
		||||
    {
 | 
			
		||||
        return 0xC0 | ((color >> 18) & 0x30) | ((color >> 12) & 0x0C) | ((color >> 6) & 0x03);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets red from color.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  color The color.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The red from color.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getRedFromNativeColor(uint8_t color)
 | 
			
		||||
    {
 | 
			
		||||
        return ((color >> 4) & 0x03) * 0x55;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets green from color.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  color The color.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The green from color.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getGreenFromNativeColor(uint8_t color)
 | 
			
		||||
    {
 | 
			
		||||
        return ((color >> 2) & 0x03) * 0x55;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets blue from color.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  color The color.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The blue from color.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getBlueFromNativeColor(uint8_t color)
 | 
			
		||||
    {
 | 
			
		||||
        return (color & 0x03) * 0x55;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets alpha from color.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  color The color.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The alpha from color.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getAlphaFromNativeColor(uint8_t color)
 | 
			
		||||
    {
 | 
			
		||||
        return ((color >> 6) & 0x03) * 0x55;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for all image formats. This allows drawing any image
 | 
			
		||||
     * using Bilinear Interpolation and Nearest Neighbor algorithms, but might use a lot of
 | 
			
		||||
     * memory for the drawing algorithms.
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperAll();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB2222 image format. This allows drawing ARGB2222
 | 
			
		||||
     * images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB2222_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperARGB2222_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB2222();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB2222 image format. This allows drawing ARGB2222
 | 
			
		||||
     * images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB2222, enableTextureMapperARGB2222_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB2222_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB2222 image format. This allows drawing ARGB2222
 | 
			
		||||
     * images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB2222, enableTextureMapperARGB2222_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB2222_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB8888 image format. This allows drawing ARGB8888
 | 
			
		||||
     * images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB8888_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperARGB8888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB8888();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB8888 image format. This allows drawing ARGB8888
 | 
			
		||||
     * images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB8888, enableTextureMapperARGB8888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB8888_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB8888 image format. This allows drawing ARGB8888
 | 
			
		||||
     * images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB8888, enableTextureMapperARGB8888_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB8888_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4_BilinearInterpolation, enableTextureMapperA4_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4, enableTextureMapperA4_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4, enableTextureMapperA4_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    virtual DrawTextureMapScanLineBase* getTextureMapperDrawScanLine(const TextureSurface& texture, RenderingVariant renderVariant, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Find out how much to advance in the display buffer to get to the next pixel.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  rotatedDisplay Is the display running in portrait mode?
 | 
			
		||||
     * @param  textRotation   Rotation to perform.
 | 
			
		||||
     *
 | 
			
		||||
     * @return How much to advance to get to the next pixel.
 | 
			
		||||
     */
 | 
			
		||||
    static int nextPixel(bool rotatedDisplay, TextRotation textRotation);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Find out how much to advance in the display buffer to get to the next line.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  rotatedDisplay Is the display running in portrait mode?
 | 
			
		||||
     * @param  textRotation   Rotation to perform.
 | 
			
		||||
     *
 | 
			
		||||
     * @return How much to advance to get to the next line.
 | 
			
		||||
     */
 | 
			
		||||
    static int nextLine(bool rotatedDisplay, TextRotation textRotation);
 | 
			
		||||
 | 
			
		||||
    virtual void drawGlyph(uint16_t* wbuf16, Rect widgetArea, int16_t x, int16_t y, uint16_t offsetX, uint16_t offsetY, const Rect& invalidatedArea, const GlyphNode* glyph, const uint8_t* glyphData, uint8_t byteAlignRow, colortype color, uint8_t bitsPerPixel, uint8_t alpha, TextRotation rotation);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blit a 2D source-array to the framebuffer performing alpha-blending per pixel as
 | 
			
		||||
     * specified if ARGB8888 is not supported by the DMA a software blend is performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData The source-array pointer (points to the beginning of the data). The
 | 
			
		||||
     *                    sourceData must be stored as 32- bits ARGB8888 values.
 | 
			
		||||
     * @param  source     The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect   A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha      The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                    solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyARGB8888(const uint32_t* sourceData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blit a 2D source-array to the framebuffer performing alpha-blending per pixel as
 | 
			
		||||
     * specified Performs always a software blend.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData16 The source-array pointer (points to the beginning of the data). The
 | 
			
		||||
     *                      sourceData must be stored as 8-bits ARGB2222 values.
 | 
			
		||||
     * @param  source       The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect     A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha        The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                      solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyAlphaPerPixel(const uint16_t* sourceData16, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ARGB2222_NonOpaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ARGB2222_Opaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ARGB2222_NonOpaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ARGB2222_Opaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ARGB8888_NonOpaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ARGB8888_NonOpaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_BilinearInterpolation_GA;
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t bilinearInterpolate8(uint8_t c00, uint8_t c10, uint8_t x)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16);
 | 
			
		||||
        const uint16_t xy10 = 16 * x;
 | 
			
		||||
        const uint16_t xy00 = 256 - xy10;
 | 
			
		||||
 | 
			
		||||
        return (c00 * xy00 + c10 * xy10) >> 8;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t bilinearInterpolate8(uint8_t c00, uint8_t c10, uint8_t c01, uint8_t c11, uint8_t x, uint8_t y)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16 && y < 16);
 | 
			
		||||
        const uint16_t xy11 = x * y;
 | 
			
		||||
        const uint16_t xy10 = 16 * x - xy11;
 | 
			
		||||
        const uint16_t xy01 = 16 * y - xy11;
 | 
			
		||||
        const uint16_t xy00 = 256 - (xy11 + xy10 + xy01);
 | 
			
		||||
 | 
			
		||||
        return (c00 * xy00 + c10 * xy10 + c01 * xy01 + c11 * xy11) >> 8;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION uint32_t convertARGB2222toARGB8888(colortype col) const
 | 
			
		||||
    {
 | 
			
		||||
        return (((col & 0xC0) << 18) | ((col & 0x30) << 12) | ((col & 0x0C) << 6) | (col & 0x03)) * 0x55;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t convertARGB2222toRGB888(uint8_t val)
 | 
			
		||||
    {
 | 
			
		||||
        return (((val & 0x30) << 12) | ((val & 0x0C) << 6) | (val & 0x03)) * 0x55;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t convertRGB888toXRGB2222(uint32_t val)
 | 
			
		||||
    {
 | 
			
		||||
        val &= 0xC0C0C0;
 | 
			
		||||
        return (val >> 6) | (val >> 12) | (val >> 18);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t bilinearInterpolate888(uint32_t c00, uint32_t c10, uint32_t c01, uint32_t c11, uint8_t x, uint8_t y)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16 && y < 16);
 | 
			
		||||
        const uint16_t xy11 = x * y;
 | 
			
		||||
        const uint16_t xy10 = 16 * x - xy11;
 | 
			
		||||
        const uint16_t xy01 = 16 * y - xy11;
 | 
			
		||||
        const uint16_t xy00 = 256 - (xy11 + xy10 + xy01);
 | 
			
		||||
 | 
			
		||||
        return ((((c00 & 0xFF00FF) * xy00 + (c10 & 0xFF00FF) * xy10 + (c01 & 0xFF00FF) * xy01 + (c11 & 0xFF00FF) * xy11) >> 8) & 0xFF00FF) |
 | 
			
		||||
               ((((c00 & 0x00FF00) * xy00 + (c10 & 0x00FF00) * xy10 + (c01 & 0x00FF00) * xy01 + (c11 & 0x00FF00) * xy11) >> 8) & 0x00FF00);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div255_888(uint32_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        return div255rb((val & 0xFF00FF) * factor) | div255g((val & 0x00FF00) * factor);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div255_888_FFcheck(uint32_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        return factor < 0xFF ? div255_888(val, factor) : val;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t alphaBlend(const uint8_t r, const uint8_t g, const uint8_t b, const uint8_t alpha, const uint8_t fbr, const uint8_t fbg, const uint8_t fbb, const uint8_t ialpha)
 | 
			
		||||
    {
 | 
			
		||||
        return getNativeColorFromRGB(div255(r * alpha + fbr * ialpha), div255(g * alpha + fbg * ialpha), div255(b * alpha + fbb * ialpha));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    class DrawTextureMapScanLineBase8 : public DrawTextureMapScanLineBase
 | 
			
		||||
    {
 | 
			
		||||
    protected:
 | 
			
		||||
        FORCE_INLINE_FUNCTION bool overrunCheckNearestNeighbor(uint8_t*& destBits, int& pixelsToDraw, fixed16_16& U, fixed16_16& V, fixed16_16 deltaU, fixed16_16 deltaV, const int16_t maxWidth, const int16_t maxHeight) const;
 | 
			
		||||
        FORCE_INLINE_FUNCTION bool overrunCheckBilinearInterpolation(uint8_t*& destBits, int& pixelsToDraw, fixed16_16& U, fixed16_16& V, fixed16_16 deltaU, fixed16_16 deltaV, const int16_t maxWidth, const int16_t maxHeight) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ARGB2222_NonOpaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ARGB2222_Opaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ARGB2222_NonOpaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint8_t* const destBits, const uint8_t* const textureBits, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ARGB2222_Opaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint8_t* const destBits, const uint8_t* const textureBits, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ARGB8888_NonOpaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ARGB8888_NonOpaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint8_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_NearestNeighbor_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t a4, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_BilinearInterpolation_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint8_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_LCD8BPP_ARGB2222_HPP
 | 
			
		||||
@ -0,0 +1,450 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file platform/driver/lcd/LCD8bpp_BGRA2222.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touchgfx::LCD8bpp_BGRA2222 class.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_LCD8BPP_BGRA2222_HPP
 | 
			
		||||
#define TOUCHGFX_LCD8BPP_BGRA2222_HPP
 | 
			
		||||
 | 
			
		||||
#include <touchgfx/Bitmap.hpp>
 | 
			
		||||
#include <touchgfx/hal/HAL.hpp>
 | 
			
		||||
#include <touchgfx/hal/Types.hpp>
 | 
			
		||||
#include <touchgfx/lcd/LCD.hpp>
 | 
			
		||||
#include <touchgfx/lcd/LCD8BGRA2222DebugPrinter.hpp>
 | 
			
		||||
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
/**
 | 
			
		||||
 * This class contains the various low-level drawing routines for drawing bitmaps, texts and
 | 
			
		||||
 * rectangles on 16 bits per pixel displays.
 | 
			
		||||
 *
 | 
			
		||||
 * @see LCD
 | 
			
		||||
 *
 | 
			
		||||
 * @note All coordinates are expected to be in absolute coordinates!
 | 
			
		||||
 */
 | 
			
		||||
class LCD8bpp_BGRA2222 : public LCD
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    LCD8bpp_BGRA2222();
 | 
			
		||||
 | 
			
		||||
    virtual void drawPartialBitmap(const Bitmap& bitmap, int16_t x, int16_t y, const Rect& rect, uint8_t alpha = 255, bool useOptimized = true);
 | 
			
		||||
 | 
			
		||||
    virtual void blitCopy(const uint16_t* sourceData, const Rect& source, const Rect& blitRect, uint8_t alpha, bool hasTransparentPixels);
 | 
			
		||||
 | 
			
		||||
    virtual void blitCopy(const uint8_t* sourceData, Bitmap::BitmapFormat sourceFormat, const Rect& source, const Rect& blitRect, uint8_t alpha, bool hasTransparentPixels);
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t* copyFrameBufferRegionToMemory(const Rect& visRegion, const Rect& absRegion, const BitmapId bitmapId);
 | 
			
		||||
 | 
			
		||||
    virtual Rect copyFrameBufferRegionToMemory(const Rect& visRegion, const Rect& absRegion, uint8_t* dst, int16_t dstWidth, int16_t dstHeight);
 | 
			
		||||
 | 
			
		||||
    virtual void copyAreaFromTFTToClientBuffer(const Rect& region);
 | 
			
		||||
 | 
			
		||||
    virtual void fillRect(const Rect& rect, colortype color, uint8_t alpha = 255);
 | 
			
		||||
 | 
			
		||||
    virtual void fillBuffer(uint8_t* const destination, uint16_t pixelStride, const Rect& rect, const colortype color, const uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t bitDepth() const
 | 
			
		||||
    {
 | 
			
		||||
        return 8;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual Bitmap::BitmapFormat framebufferFormat() const
 | 
			
		||||
    {
 | 
			
		||||
        return Bitmap::BGRA2222;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t framebufferStride() const
 | 
			
		||||
    {
 | 
			
		||||
        return getFramebufferStride();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Framebuffer stride in bytes. The distance (in bytes) from the start of one
 | 
			
		||||
     * framebuffer row, to the next.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The number of bytes in one framebuffer row.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint16_t getFramebufferStride()
 | 
			
		||||
    {
 | 
			
		||||
        assert(HAL::FRAME_BUFFER_WIDTH > 0 && "HAL has not been initialized yet");
 | 
			
		||||
        return HAL::FRAME_BUFFER_WIDTH;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets color from RGB.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  red   The red.
 | 
			
		||||
     * @param  green The green.
 | 
			
		||||
     * @param  blue  The blue.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The color from RGB.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getNativeColorFromRGB(uint8_t red, uint8_t green, uint8_t blue)
 | 
			
		||||
    {
 | 
			
		||||
        return (blue & 0xC0) | ((green & 0xC0) >> 2) | ((red & 0xC0) >> 4) | 0x03;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Generates a color representation to be used on the LCD, based on 24 bit RGB values.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  color The color.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The color representation depending on LCD color format.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getNativeColor(colortype color)
 | 
			
		||||
    {
 | 
			
		||||
        return ((color >> 20) & 0x0C) | ((color >> 10) & 0x30) | (color & 0xC0) | 0x03;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets red from color.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  color The color.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The red from color.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getRedFromNativeColor(uint8_t color)
 | 
			
		||||
    {
 | 
			
		||||
        return ((color >> 2) & 0x03) * 0x55;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets green from color.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  color The color.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The green from color.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getGreenFromNativeColor(uint8_t color)
 | 
			
		||||
    {
 | 
			
		||||
        return ((color >> 4) & 0x03) * 0x55;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets blue from color.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  color The color.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The blue from color.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getBlueFromNativeColor(uint8_t color)
 | 
			
		||||
    {
 | 
			
		||||
        return ((color >> 6) & 0x03) * 0x55;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets alpha from color.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  color The color.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The alpha from color.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getAlphaFromNativeColor(uint8_t color)
 | 
			
		||||
    {
 | 
			
		||||
        return (color & 0x03) * 0x55;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for all image formats. This allows drawing any image
 | 
			
		||||
     * using Bilinear Interpolation and Nearest Neighbor algorithms, but might use a lot of
 | 
			
		||||
     * memory for the drawing algorithms.
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperAll();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for BGRA2222 image format. This allows drawing BGRA2222
 | 
			
		||||
     * images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperBGRA2222_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperBGRA2222_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperBGRA2222();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for BGRA2222 image format. This allows drawing BGRA2222
 | 
			
		||||
     * images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperBGRA2222, enableTextureMapperBGRA2222_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperBGRA2222_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for BGRA2222 image format. This allows drawing BGRA2222
 | 
			
		||||
     * images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperBGRA2222, enableTextureMapperBGRA2222_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperBGRA2222_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB8888 image format. This allows drawing ARGB8888
 | 
			
		||||
     * images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB8888_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperARGB8888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB8888();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB8888 image format. This allows drawing ARGB8888
 | 
			
		||||
     * images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB8888, enableTextureMapperARGB8888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB8888_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB8888 image format. This allows drawing ARGB8888
 | 
			
		||||
     * images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB8888, enableTextureMapperARGB8888_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB8888_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4_BilinearInterpolation, enableTextureMapperA4_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4, enableTextureMapperA4_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4, enableTextureMapperA4_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    virtual DrawTextureMapScanLineBase* getTextureMapperDrawScanLine(const TextureSurface& texture, RenderingVariant renderVariant, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Find out how much to advance in the display buffer to get to the next pixel.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  rotatedDisplay Is the display running in portrait mode?
 | 
			
		||||
     * @param  textRotation   Rotation to perform.
 | 
			
		||||
     *
 | 
			
		||||
     * @return How much to advance to get to the next pixel.
 | 
			
		||||
     */
 | 
			
		||||
    static int nextPixel(bool rotatedDisplay, TextRotation textRotation);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Find out how much to advance in the display buffer to get to the next line.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  rotatedDisplay Is the display running in portrait mode?
 | 
			
		||||
     * @param  textRotation   Rotation to perform.
 | 
			
		||||
     *
 | 
			
		||||
     * @return How much to advance to get to the next line.
 | 
			
		||||
     */
 | 
			
		||||
    static int nextLine(bool rotatedDisplay, TextRotation textRotation);
 | 
			
		||||
 | 
			
		||||
    virtual void drawGlyph(uint16_t* wbuf16, Rect widgetArea, int16_t x, int16_t y, uint16_t offsetX, uint16_t offsetY, const Rect& invalidatedArea, const GlyphNode* glyph, const uint8_t* glyphData, uint8_t byteAlignRow, colortype color, uint8_t bitsPerPixel, uint8_t alpha, TextRotation rotation);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blit a 2D source-array to the framebuffer performing alpha-blending per pixel as
 | 
			
		||||
     * specified if ARGB8888 is not supported by the DMA a software blend is performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData The source-array pointer (points to the beginning of the data). The
 | 
			
		||||
     *                    sourceData must be stored as 32- bits ARGB8888 values.
 | 
			
		||||
     * @param  source     The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect   A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha      The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                    solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyARGB8888(const uint32_t* sourceData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blit a 2D source-array to the framebuffer performing alpha-blending per pixel as
 | 
			
		||||
     * specified Performs always a software blend.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData16 The source-array pointer (points to the beginning of the data). The
 | 
			
		||||
     *                      sourceData must be stored as 8-bits BGRA2222 values.
 | 
			
		||||
     * @param  source       The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect     A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha        The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                      solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyAlphaPerPixel(const uint16_t* sourceData16, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_BGRA2222_NonOpaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_BGRA2222_Opaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_BGRA2222_NonOpaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_BGRA2222_Opaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ARGB8888_NonOpaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ARGB8888_NonOpaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_BilinearInterpolation_GA;
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t bilinearInterpolate8(uint8_t c00, uint8_t c10, uint8_t x)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16);
 | 
			
		||||
        const uint16_t xy10 = 16 * x;
 | 
			
		||||
        const uint16_t xy00 = 256 - xy10;
 | 
			
		||||
 | 
			
		||||
        return (c00 * xy00 + c10 * xy10) >> 8;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t bilinearInterpolate8(uint8_t c00, uint8_t c10, uint8_t c01, uint8_t c11, uint8_t x, uint8_t y)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16 && y < 16);
 | 
			
		||||
        const uint16_t xy11 = x * y;
 | 
			
		||||
        const uint16_t xy10 = 16 * x - xy11;
 | 
			
		||||
        const uint16_t xy01 = 16 * y - xy11;
 | 
			
		||||
        const uint16_t xy00 = 256 - (xy11 + xy10 + xy01);
 | 
			
		||||
 | 
			
		||||
        return (c00 * xy00 + c10 * xy10 + c01 * xy01 + c11 * xy11) >> 8;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION uint32_t convertBGRA2222toARGB8888(colortype col) const
 | 
			
		||||
    {
 | 
			
		||||
        return (((col & 0x03) << 24) | ((col & 0x0C) << 14) | ((col & 0x30) << 4) | ((col & 0xC0) >> 6)) * 0x55;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t convertBGRA2222toRGB888(uint8_t val)
 | 
			
		||||
    {
 | 
			
		||||
        return (((val & 0x0C) << 14) | ((val & 0x30) << 4) | ((val & 0xC0) >> 6)) * 0x55;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t convertRGB888toBGRX2222(uint32_t val)
 | 
			
		||||
    {
 | 
			
		||||
        val &= 0xC0C0C0;
 | 
			
		||||
        return (val) | (val >> 10) | (val >> 20);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t bilinearInterpolate888(uint32_t c00, uint32_t c10, uint32_t c01, uint32_t c11, uint8_t x, uint8_t y)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16 && y < 16);
 | 
			
		||||
        const uint16_t xy11 = x * y;
 | 
			
		||||
        const uint16_t xy10 = 16 * x - xy11;
 | 
			
		||||
        const uint16_t xy01 = 16 * y - xy11;
 | 
			
		||||
        const uint16_t xy00 = 256 - (xy11 + xy10 + xy01);
 | 
			
		||||
 | 
			
		||||
        return ((((c00 & 0xFF00FF) * xy00 + (c10 & 0xFF00FF) * xy10 + (c01 & 0xFF00FF) * xy01 + (c11 & 0xFF00FF) * xy11) >> 8) & 0xFF00FF) |
 | 
			
		||||
               ((((c00 & 0x00FF00) * xy00 + (c10 & 0x00FF00) * xy10 + (c01 & 0x00FF00) * xy01 + (c11 & 0x00FF00) * xy11) >> 8) & 0x00FF00);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div255_888(uint32_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        return div255rb((val & 0xFF00FF) * factor) | div255g((val & 0x00FF00) * factor);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div255_888_FFcheck(uint32_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        return factor < 0xFF ? div255_888(val, factor) : val;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t alphaBlend(const uint8_t r, const uint8_t g, const uint8_t b, const uint8_t alpha, const uint8_t fbr, const uint8_t fbg, const uint8_t fbb, const uint8_t ialpha)
 | 
			
		||||
    {
 | 
			
		||||
        return getNativeColorFromRGB(div255(r * alpha + fbr * ialpha), div255(g * alpha + fbg * ialpha), div255(b * alpha + fbb * ialpha));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    class DrawTextureMapScanLineBase8 : public DrawTextureMapScanLineBase
 | 
			
		||||
    {
 | 
			
		||||
    protected:
 | 
			
		||||
        FORCE_INLINE_FUNCTION bool overrunCheckNearestNeighbor(uint8_t*& destBits, int& pixelsToDraw, fixed16_16& U, fixed16_16& V, fixed16_16 deltaU, fixed16_16 deltaV, const int16_t maxWidth, const int16_t maxHeight) const;
 | 
			
		||||
        FORCE_INLINE_FUNCTION bool overrunCheckBilinearInterpolation(uint8_t*& destBits, int& pixelsToDraw, fixed16_16& U, fixed16_16& V, fixed16_16 deltaU, fixed16_16 deltaV, const int16_t maxWidth, const int16_t maxHeight) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_BGRA2222_NonOpaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_BGRA2222_Opaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_BGRA2222_NonOpaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint8_t* const destBits, const uint8_t* const textureBits, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_BGRA2222_Opaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint8_t* const destBits, const uint8_t* const textureBits, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ARGB8888_NonOpaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ARGB8888_NonOpaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint8_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_NearestNeighbor_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t a4, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_BilinearInterpolation_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint8_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_LCD8BPP_BGRA2222_HPP
 | 
			
		||||
@ -0,0 +1,450 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file platform/driver/lcd/LCD8bpp_RGBA2222.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touchgfx::LCD8bppRGBA2222 class.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_LCD8BPP_RGBA2222_HPP
 | 
			
		||||
#define TOUCHGFX_LCD8BPP_RGBA2222_HPP
 | 
			
		||||
 | 
			
		||||
#include <touchgfx/Bitmap.hpp>
 | 
			
		||||
#include <touchgfx/hal/HAL.hpp>
 | 
			
		||||
#include <touchgfx/hal/Types.hpp>
 | 
			
		||||
#include <touchgfx/lcd/LCD.hpp>
 | 
			
		||||
#include <touchgfx/lcd/LCD8RGBA2222DebugPrinter.hpp>
 | 
			
		||||
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
/**
 | 
			
		||||
 * This class contains the various low-level drawing routines for drawing bitmaps, texts and
 | 
			
		||||
 * rectangles on 16 bits per pixel displays.
 | 
			
		||||
 *
 | 
			
		||||
 * @see LCD
 | 
			
		||||
 *
 | 
			
		||||
 * @note All coordinates are expected to be in absolute coordinates!
 | 
			
		||||
 */
 | 
			
		||||
class LCD8bpp_RGBA2222 : public LCD
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    LCD8bpp_RGBA2222();
 | 
			
		||||
 | 
			
		||||
    virtual void drawPartialBitmap(const Bitmap& bitmap, int16_t x, int16_t y, const Rect& rect, uint8_t alpha = 255, bool useOptimized = true);
 | 
			
		||||
 | 
			
		||||
    virtual void blitCopy(const uint16_t* sourceData, const Rect& source, const Rect& blitRect, uint8_t alpha, bool hasTransparentPixels);
 | 
			
		||||
 | 
			
		||||
    virtual void blitCopy(const uint8_t* sourceData, Bitmap::BitmapFormat sourceFormat, const Rect& source, const Rect& blitRect, uint8_t alpha, bool hasTransparentPixels);
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t* copyFrameBufferRegionToMemory(const Rect& visRegion, const Rect& absRegion, const BitmapId bitmapId);
 | 
			
		||||
 | 
			
		||||
    virtual Rect copyFrameBufferRegionToMemory(const Rect& visRegion, const Rect& absRegion, uint8_t* dst, int16_t dstWidth, int16_t dstHeight);
 | 
			
		||||
 | 
			
		||||
    virtual void copyAreaFromTFTToClientBuffer(const Rect& region);
 | 
			
		||||
 | 
			
		||||
    virtual void fillRect(const Rect& rect, colortype color, uint8_t alpha = 255);
 | 
			
		||||
 | 
			
		||||
    virtual void fillBuffer(uint8_t* const destination, uint16_t pixelStride, const Rect& rect, const colortype color, const uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    virtual uint8_t bitDepth() const
 | 
			
		||||
    {
 | 
			
		||||
        return 8;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual Bitmap::BitmapFormat framebufferFormat() const
 | 
			
		||||
    {
 | 
			
		||||
        return Bitmap::RGBA2222;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual uint16_t framebufferStride() const
 | 
			
		||||
    {
 | 
			
		||||
        return getFramebufferStride();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Framebuffer stride in bytes. The distance (in bytes) from the start of one
 | 
			
		||||
     * framebuffer row, to the next.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The number of bytes in one framebuffer row.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint16_t getFramebufferStride()
 | 
			
		||||
    {
 | 
			
		||||
        assert(HAL::FRAME_BUFFER_WIDTH > 0 && "HAL has not been initialized yet");
 | 
			
		||||
        return HAL::FRAME_BUFFER_WIDTH;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets color from RGB.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  red   The red.
 | 
			
		||||
     * @param  green The green.
 | 
			
		||||
     * @param  blue  The blue.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The color from RGB.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getNativeColorFromRGB(uint8_t red, uint8_t green, uint8_t blue)
 | 
			
		||||
    {
 | 
			
		||||
        return (red & 0xC0) | ((green & 0xC0) >> 2) | ((blue & 0xC0) >> 4) | 0x03;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Generates a color representation to be used on the LCD, based on 24 bit RGB values.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  color The color.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The color representation depending on LCD color format.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getNativeColor(colortype color)
 | 
			
		||||
    {
 | 
			
		||||
        return ((color >> 16) & 0xC0) | ((color >> 10) & 0x30) | ((color >> 4) & 0x0C) | 0x03;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets red from color.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  color The color.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The red from color.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getRedFromNativeColor(uint8_t color)
 | 
			
		||||
    {
 | 
			
		||||
        return ((color >> 6) & 0x03) * 0x55;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets green from color.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  color The color.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The green from color.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getGreenFromNativeColor(uint8_t color)
 | 
			
		||||
    {
 | 
			
		||||
        return ((color >> 4) & 0x03) * 0x55;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets blue from color.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  color The color.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The blue from color.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getBlueFromNativeColor(uint8_t color)
 | 
			
		||||
    {
 | 
			
		||||
        return ((color >> 2) & 0x03) * 0x55;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets alpha from color.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  color The color.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The alpha from color.
 | 
			
		||||
     */
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t getAlphaFromNativeColor(uint8_t color)
 | 
			
		||||
    {
 | 
			
		||||
        return (color & 0x03) * 0x55;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for all image formats. This allows drawing any image
 | 
			
		||||
     * using Bilinear Interpolation and Nearest Neighbor algorithms, but might use a lot of
 | 
			
		||||
     * memory for the drawing algorithms.
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperAll();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for RGBA2222 image format. This allows drawing RGBA2222
 | 
			
		||||
     * images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGBA2222_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperRGBA2222_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGBA2222();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for RGBA2222 image format. This allows drawing RGBA2222
 | 
			
		||||
     * images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGBA2222, enableTextureMapperRGBA2222_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGBA2222_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for RGBA2222 image format. This allows drawing RGBA2222
 | 
			
		||||
     * images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperRGBA2222, enableTextureMapperRGBA2222_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperRGBA2222_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB8888 image format. This allows drawing ARGB8888
 | 
			
		||||
     * images using Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB8888_BilinearInterpolation,
 | 
			
		||||
     *      enableTextureMapperARGB8888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB8888();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB8888 image format. This allows drawing ARGB8888
 | 
			
		||||
     * images using Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB8888, enableTextureMapperARGB8888_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB8888_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for ARGB8888 image format. This allows drawing ARGB8888
 | 
			
		||||
     * images using Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperARGB8888, enableTextureMapperARGB8888_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperARGB8888_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Bilinear Interpolation and Nearest Neighbor algorithms.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4_BilinearInterpolation, enableTextureMapperA4_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Bilinear Interpolation algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4, enableTextureMapperA4_NearestNeighbor
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4_BilinearInterpolation();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Enables the texture mappers for A4 image format. This allows drawing A4 images using
 | 
			
		||||
     * Nearest Neighbor algorithm.
 | 
			
		||||
     *
 | 
			
		||||
     * @see enableTextureMapperA4, enableTextureMapperA4_BilinearInterpolation
 | 
			
		||||
     */
 | 
			
		||||
    void enableTextureMapperA4_NearestNeighbor();
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    virtual DrawTextureMapScanLineBase* getTextureMapperDrawScanLine(const TextureSurface& texture, RenderingVariant renderVariant, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Find out how much to advance in the display buffer to get to the next pixel.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  rotatedDisplay Is the display running in portrait mode?
 | 
			
		||||
     * @param  textRotation   Rotation to perform.
 | 
			
		||||
     *
 | 
			
		||||
     * @return How much to advance to get to the next pixel.
 | 
			
		||||
     */
 | 
			
		||||
    static int nextPixel(bool rotatedDisplay, TextRotation textRotation);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Find out how much to advance in the display buffer to get to the next line.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  rotatedDisplay Is the display running in portrait mode?
 | 
			
		||||
     * @param  textRotation   Rotation to perform.
 | 
			
		||||
     *
 | 
			
		||||
     * @return How much to advance to get to the next line.
 | 
			
		||||
     */
 | 
			
		||||
    static int nextLine(bool rotatedDisplay, TextRotation textRotation);
 | 
			
		||||
 | 
			
		||||
    virtual void drawGlyph(uint16_t* wbuf16, Rect widgetArea, int16_t x, int16_t y, uint16_t offsetX, uint16_t offsetY, const Rect& invalidatedArea, const GlyphNode* glyph, const uint8_t* glyphData, uint8_t byteAlignRow, colortype color, uint8_t bitsPerPixel, uint8_t alpha, TextRotation rotation);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blit a 2D source-array to the framebuffer performing alpha-blending per pixel as
 | 
			
		||||
     * specified if ARGB8888 is not supported by the DMA a software blend is performed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData The source-array pointer (points to the beginning of the data). The
 | 
			
		||||
     *                    sourceData must be stored as 32- bits ARGB8888 values.
 | 
			
		||||
     * @param  source     The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect   A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha      The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                    solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyARGB8888(const uint32_t* sourceData, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Blit a 2D source-array to the framebuffer performing alpha-blending per pixel as
 | 
			
		||||
     * specified Performs always a software blend.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  sourceData16 The source-array pointer (points to the beginning of the data). The
 | 
			
		||||
     *                      sourceData must be stored as 8-bit RGBA2222 values.
 | 
			
		||||
     * @param  source       The location and dimensions of the source.
 | 
			
		||||
     * @param  blitRect     A rectangle describing what region is to be drawn.
 | 
			
		||||
     * @param  alpha        The alpha value to use for blending applied to the whole image (255 =
 | 
			
		||||
     *                      solid, no blending)
 | 
			
		||||
     */
 | 
			
		||||
    static void blitCopyAlphaPerPixel(const uint16_t* sourceData16, const Rect& source, const Rect& blitRect, uint8_t alpha);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGBA2222_NonOpaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGBA2222_Opaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGBA2222_NonOpaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_RGBA2222_Opaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ARGB8888_NonOpaque_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_ARGB8888_NonOpaque_BilinearInterpolation_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_NearestNeighbor_GA;
 | 
			
		||||
    DrawTextureMapScanLineBase* textureMapper_A4_BilinearInterpolation_GA;
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t bilinearInterpolate8(uint8_t c00, uint8_t c10, uint8_t x)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16);
 | 
			
		||||
        const uint16_t xy10 = 16 * x;
 | 
			
		||||
        const uint16_t xy00 = 256 - xy10;
 | 
			
		||||
 | 
			
		||||
        return (c00 * xy00 + c10 * xy10) >> 8;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t bilinearInterpolate8(uint8_t c00, uint8_t c10, uint8_t c01, uint8_t c11, uint8_t x, uint8_t y)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16 && y < 16);
 | 
			
		||||
        const uint16_t xy11 = x * y;
 | 
			
		||||
        const uint16_t xy10 = 16 * x - xy11;
 | 
			
		||||
        const uint16_t xy01 = 16 * y - xy11;
 | 
			
		||||
        const uint16_t xy00 = 256 - (xy11 + xy10 + xy01);
 | 
			
		||||
 | 
			
		||||
        return (c00 * xy00 + c10 * xy10 + c01 * xy01 + c11 * xy11) >> 8;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION uint32_t convertRGBA2222toARGB8888(colortype col) const
 | 
			
		||||
    {
 | 
			
		||||
        return (((col & 0x03) << 24) | ((col & 0xC0) << 10) | ((col & 0x30) << 4) | ((col & 0x0C) >> 2)) * 0x55;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t convertRGBA2222toRGB888(uint8_t val)
 | 
			
		||||
    {
 | 
			
		||||
        return (((val & 0xC0) << 10) | ((val & 0x30) << 4) | ((val & 0x0C) >> 2)) * 0x55;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t convertRGB888toRGBX2222(uint32_t val)
 | 
			
		||||
    {
 | 
			
		||||
        val &= 0xC0C0C0;
 | 
			
		||||
        return (val >> 4) | (val >> 10) | (val >> 16);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t bilinearInterpolate888(uint32_t c00, uint32_t c10, uint32_t c01, uint32_t c11, uint8_t x, uint8_t y)
 | 
			
		||||
    {
 | 
			
		||||
        assert(x < 16 && y < 16);
 | 
			
		||||
        const uint16_t xy11 = x * y;
 | 
			
		||||
        const uint16_t xy10 = 16 * x - xy11;
 | 
			
		||||
        const uint16_t xy01 = 16 * y - xy11;
 | 
			
		||||
        const uint16_t xy00 = 256 - (xy11 + xy10 + xy01);
 | 
			
		||||
 | 
			
		||||
        return ((((c00 & 0xFF00FF) * xy00 + (c10 & 0xFF00FF) * xy10 + (c01 & 0xFF00FF) * xy01 + (c11 & 0xFF00FF) * xy11) >> 8) & 0xFF00FF) |
 | 
			
		||||
               ((((c00 & 0x00FF00) * xy00 + (c10 & 0x00FF00) * xy10 + (c01 & 0x00FF00) * xy01 + (c11 & 0x00FF00) * xy11) >> 8) & 0x00FF00);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div255_888(uint32_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        return div255rb((val & 0xFF00FF) * factor) | div255g((val & 0x00FF00) * factor);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint32_t div255_888_FFcheck(uint32_t val, uint8_t factor)
 | 
			
		||||
    {
 | 
			
		||||
        return factor < 0xFF ? div255_888(val, factor) : val;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FORCE_INLINE_FUNCTION static uint8_t alphaBlend(const uint8_t r, const uint8_t g, const uint8_t b, const uint8_t alpha, const uint8_t fbr, const uint8_t fbg, const uint8_t fbb, const uint8_t ialpha)
 | 
			
		||||
    {
 | 
			
		||||
        return getNativeColorFromRGB(div255(r * alpha + fbr * ialpha), div255(g * alpha + fbg * ialpha), div255(b * alpha + fbb * ialpha));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    class DrawTextureMapScanLineBase8 : public DrawTextureMapScanLineBase
 | 
			
		||||
    {
 | 
			
		||||
    protected:
 | 
			
		||||
        FORCE_INLINE_FUNCTION bool overrunCheckNearestNeighbor(uint8_t*& destBits, int& pixelsToDraw, fixed16_16& U, fixed16_16& V, fixed16_16 deltaU, fixed16_16 deltaV, const int16_t maxWidth, const int16_t maxHeight) const;
 | 
			
		||||
        FORCE_INLINE_FUNCTION bool overrunCheckBilinearInterpolation(uint8_t*& destBits, int& pixelsToDraw, fixed16_16& U, fixed16_16& V, fixed16_16 deltaU, fixed16_16 deltaV, const int16_t maxWidth, const int16_t maxHeight) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGBA2222_NonOpaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGBA2222_Opaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGBA2222_NonOpaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint8_t* const destBits, const uint8_t* const textureBits, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_RGBA2222_Opaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t* const textureBits, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint8_t* const destBits, const uint8_t* const textureBits, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ARGB8888_NonOpaque_NearestNeighbor_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_ARGB8888_NonOpaque_BilinearInterpolation_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint8_t* const destBits, const uint32_t* const textureBits32, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_NearestNeighbor_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint8_t a4, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class TextureMapper_A4_BilinearInterpolation_GA : public DrawTextureMapScanLineBase8
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual void drawTextureMapScanLineSubdivisions(int subdivisions, const int widthModLength, int pixelsToDraw, const int affineLength, float oneOverZRight, float UOverZRight, float VOverZRight, fixed16_16 U, fixed16_16 V, fixed16_16 deltaU, fixed16_16 deltaV, float ULeft, float VLeft, float URight, float VRight, float ZRight, const DrawingSurface& dest, const int destX, const int destY, const TextureSurface& texture, uint8_t alpha, const float dOneOverZdXAff, const float dUOverZdXAff, const float dVOverZdXAff);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
        void writePixelOnEdge(uint8_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac, const uint8_t alpha) const;
 | 
			
		||||
    };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_LCD8BPP_RGBA2222_HPP
 | 
			
		||||
@ -0,0 +1,60 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file platform/driver/touch/I2CTouchController.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touchgfx::I2CTouchController interface class.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_I2CTOUCHCONTROLLER_HPP
 | 
			
		||||
#define TOUCHGFX_I2CTOUCHCONTROLLER_HPP
 | 
			
		||||
 | 
			
		||||
#include <platform/driver/i2c/I2C.hpp>
 | 
			
		||||
#include <platform/driver/touch/TouchController.hpp>
 | 
			
		||||
#include <touchgfx/hal/Types.hpp>
 | 
			
		||||
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
/**
 | 
			
		||||
 * Specific I2C-enabled type of Touch Controller.
 | 
			
		||||
 *
 | 
			
		||||
 * @see TouchController
 | 
			
		||||
 */
 | 
			
		||||
class I2CTouchController : public TouchController
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    /**
 | 
			
		||||
     * Constructor. Initializes I2C driver.
 | 
			
		||||
     *
 | 
			
		||||
     * @param [in] i2c I2C driver.
 | 
			
		||||
     */
 | 
			
		||||
    I2CTouchController(I2C& i2c)
 | 
			
		||||
        : i2c(i2c)
 | 
			
		||||
    {
 | 
			
		||||
        i2c.init();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual ~I2CTouchController()
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual void init() = 0;
 | 
			
		||||
 | 
			
		||||
    virtual bool sampleTouch(int32_t& x, int32_t& y) = 0;
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    I2C& i2c; ///< I2C driver
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_I2CTOUCHCONTROLLER_HPP
 | 
			
		||||
@ -0,0 +1,45 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file platform/driver/touch/NoTouchController.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touchgfx::NoTouchController class.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_NOTOUCHCONTROLLER_HPP
 | 
			
		||||
#define TOUCHGFX_NOTOUCHCONTROLLER_HPP
 | 
			
		||||
 | 
			
		||||
#include <platform/driver/touch/TouchController.hpp>
 | 
			
		||||
#include <touchgfx/hal/Types.hpp>
 | 
			
		||||
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
/**
 | 
			
		||||
 * Empty TouchController implementation which does nothing. Use this if your display does not
 | 
			
		||||
 * have touch input capabilities.
 | 
			
		||||
 */
 | 
			
		||||
class NoTouchController : public TouchController
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    virtual void init()
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual bool sampleTouch(int32_t& x, int32_t& y)
 | 
			
		||||
    {
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_NOTOUCHCONTROLLER_HPP
 | 
			
		||||
@ -0,0 +1,41 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file platform/driver/touch/SDL2TouchController.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touchgfx::SDL2TouchController class.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_SDL2TOUCHCONTROLLER_HPP
 | 
			
		||||
#define TOUCHGFX_SDL2TOUCHCONTROLLER_HPP
 | 
			
		||||
 | 
			
		||||
#include <platform/driver/touch/TouchController.hpp>
 | 
			
		||||
#include <touchgfx/hal/Types.hpp>
 | 
			
		||||
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
/**
 | 
			
		||||
 * TouchController for the simulator.
 | 
			
		||||
 *
 | 
			
		||||
 * @see TouchController
 | 
			
		||||
 */
 | 
			
		||||
class SDL2TouchController : public TouchController
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    virtual void init();
 | 
			
		||||
 | 
			
		||||
    virtual bool sampleTouch(int32_t& x, int32_t& y);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_SDL2TOUCHCONTROLLER_HPP
 | 
			
		||||
@ -0,0 +1,43 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file platform/driver/touch/SDLTouchController.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touchgfx::SDLTouchController class.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_SDLTOUCHCONTROLLER_HPP
 | 
			
		||||
#define TOUCHGFX_SDLTOUCHCONTROLLER_HPP
 | 
			
		||||
 | 
			
		||||
#include <platform/driver/touch/TouchController.hpp>
 | 
			
		||||
#include <touchgfx/hal/Types.hpp>
 | 
			
		||||
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
/**
 | 
			
		||||
 * TouchController for the simulator.
 | 
			
		||||
 *
 | 
			
		||||
 * @see TouchController
 | 
			
		||||
 *
 | 
			
		||||
 * @deprecated Use SDL2TouchController
 | 
			
		||||
 */
 | 
			
		||||
class SDLTouchController : public TouchController
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    virtual void init();
 | 
			
		||||
 | 
			
		||||
    virtual bool sampleTouch(int32_t& x, int32_t& y);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_SDLTOUCHCONTROLLER_HPP
 | 
			
		||||
@ -0,0 +1,50 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file platform/driver/touch/TouchController.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touchgfx::TouchController interface class.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_TOUCHCONTROLLER_HPP
 | 
			
		||||
#define TOUCHGFX_TOUCHCONTROLLER_HPP
 | 
			
		||||
 | 
			
		||||
#include <touchgfx/hal/Types.hpp>
 | 
			
		||||
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
/** Basic Touch Controller interface. */
 | 
			
		||||
class TouchController
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    /** Finalizes an instance of the TouchController class. */
 | 
			
		||||
    virtual ~TouchController()
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** Initializes touch controller. */
 | 
			
		||||
    virtual void init() = 0;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Checks whether the touch screen is being touched, and if so, what coordinates.
 | 
			
		||||
     *
 | 
			
		||||
     * @param [out] x The x position of the touch.
 | 
			
		||||
     * @param [out] y The y position of the touch.
 | 
			
		||||
     *
 | 
			
		||||
     * @return True if a touch has been detected, otherwise false.
 | 
			
		||||
     */
 | 
			
		||||
    virtual bool sampleTouch(int32_t& x, int32_t& y) = 0;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_TOUCHCONTROLLER_HPP
 | 
			
		||||
@ -0,0 +1,512 @@
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (c) 2018(-2023) STMicroelectronics.
 | 
			
		||||
* All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of the TouchGFX 4.21.2 distribution.
 | 
			
		||||
*
 | 
			
		||||
* This software is licensed under terms that can be found in the LICENSE file in
 | 
			
		||||
* the root directory of this software component.
 | 
			
		||||
* If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file platform/hal/simulator/sdl2/HALSDL2.hpp
 | 
			
		||||
 *
 | 
			
		||||
 * Declares the touchgfx::HALSDL2 class.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TOUCHGFX_HALSDL2_HPP
 | 
			
		||||
#define TOUCHGFX_HALSDL2_HPP
 | 
			
		||||
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <platform/driver/touch/TouchController.hpp>
 | 
			
		||||
#include <touchgfx/hal/HAL.hpp>
 | 
			
		||||
#include <touchgfx/hal/Types.hpp>
 | 
			
		||||
#include <touchgfx/lcd/LCD.hpp>
 | 
			
		||||
#include <SDL2/SDL_render.h>
 | 
			
		||||
#include <SDL2/SDL_video.h>
 | 
			
		||||
 | 
			
		||||
namespace touchgfx
 | 
			
		||||
{
 | 
			
		||||
/** Simulator enable stdio. */
 | 
			
		||||
void simulator_enable_stdio();
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Simulator printf.
 | 
			
		||||
 *
 | 
			
		||||
 * @param  format Describes the format to use.
 | 
			
		||||
 * @param  pArg   The argument list.
 | 
			
		||||
 */
 | 
			
		||||
void simulator_printf(const char* format, va_list pArg);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * HAL implementation for the TouchGFX simulator. This particular simulator HAL implementation
 | 
			
		||||
 * uses SDL2 to show the content of the framebuffer in a window.
 | 
			
		||||
 *
 | 
			
		||||
 * @see HAL
 | 
			
		||||
 */
 | 
			
		||||
class HALSDL2 : public HAL
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    /**
 | 
			
		||||
     * Initializes a new instance of the HALSDL2 class.
 | 
			
		||||
     *
 | 
			
		||||
     * @param [in] dma       Reference to DMA interface.
 | 
			
		||||
     * @param [in] lcd       Reference to the LCD.
 | 
			
		||||
     * @param [in] touchCtrl Reference to Touch Controller driver.
 | 
			
		||||
     * @param      width     Width of the display.
 | 
			
		||||
     * @param      height    Height of the display.
 | 
			
		||||
     */
 | 
			
		||||
    HALSDL2(DMA_Interface& dma, LCD& lcd, TouchController& touchCtrl, uint16_t width, uint16_t height)
 | 
			
		||||
        : HAL(dma, lcd, touchCtrl, width, height),
 | 
			
		||||
          portraitSkin(),
 | 
			
		||||
          landscapeSkin(),
 | 
			
		||||
          currentSkin(0),
 | 
			
		||||
          isSkinActive(true),
 | 
			
		||||
          isWindowBorderless(false),
 | 
			
		||||
          isWindowVisible(true),
 | 
			
		||||
          isConsoleVisible(true),
 | 
			
		||||
          printFile(0),
 | 
			
		||||
          windowDrag(false)
 | 
			
		||||
    {
 | 
			
		||||
        setVsyncInterval(30.f); // Simulate 20Hz per default for backward compatibility
 | 
			
		||||
        updateCurrentSkin();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Main event loop. Will wait for VSYNC signal, and then process next frame. Call this
 | 
			
		||||
     * function from your GUI task.
 | 
			
		||||
     *
 | 
			
		||||
     * @note This function never returns!
 | 
			
		||||
     */
 | 
			
		||||
    virtual void taskEntry();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Sample key event from keyboard.
 | 
			
		||||
     *
 | 
			
		||||
     * @param [out] key Output parameter that will be set to the key value if a key press was
 | 
			
		||||
     *                  detected.
 | 
			
		||||
     *
 | 
			
		||||
     * @return True if a key press was detected and the "key" parameter is set to a value.
 | 
			
		||||
     */
 | 
			
		||||
    virtual bool sampleKey(uint8_t& key);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * This function is called whenever the framework has performed a complete draw.
 | 
			
		||||
     *
 | 
			
		||||
     * On some platforms, a local framebuffer needs to be pushed to the display through a
 | 
			
		||||
     * SPI channel or similar. Implement that functionality here. This function is called
 | 
			
		||||
     * whenever the framework has performed a complete draw.
 | 
			
		||||
     */
 | 
			
		||||
    virtual void flushFrameBuffer();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * This function is called whenever the framework has performed a partial draw.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  rect The area of the screen that has been drawn, expressed in absolute coordinates.
 | 
			
		||||
     */
 | 
			
		||||
    virtual void flushFrameBuffer(const Rect& rect);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Sets vsync interval for simulating same tick speed as the real hardware. Due to
 | 
			
		||||
     * limitations in the granularity of SDL, the generated ticks in the simulator might not
 | 
			
		||||
     * occur at the exact time, but accumulated over several ticks, the precision is very
 | 
			
		||||
     * good.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  ms The milliseconds between ticks.
 | 
			
		||||
     *
 | 
			
		||||
     * @note That you can also use HAL::setFrameRateCompensation() in the simulator. The effect of
 | 
			
		||||
     *       this can easily be demonstrated by dragging the console output window of the
 | 
			
		||||
     *       simulator (when running from Visual Studio) as this will pause the SDL and
 | 
			
		||||
     *       generate a lot of ticks when the console window is released. Beware that
 | 
			
		||||
     *       since the missed vsyncs are accumulated in an 8 bit counter, only up to 255
 | 
			
		||||
     *       ticks may be missed, so at VsyncInterval = 16.6667, dragging the windows for
 | 
			
		||||
     *       more than 255 * 16.6667ms = 4250ms
 | 
			
		||||
     *       = 4.25s will not generate all the ticks that were actually missed. This
 | 
			
		||||
     *       situation is, however, not very realistic, as normally just a couple of
 | 
			
		||||
     *       vsyncs are skipped.
 | 
			
		||||
     */
 | 
			
		||||
    void setVsyncInterval(float ms);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Samples the position of the mouse cursor.
 | 
			
		||||
     *
 | 
			
		||||
     * @param [out] x The x coordinate.
 | 
			
		||||
     * @param [out] y The y coordinate.
 | 
			
		||||
     *
 | 
			
		||||
     * @return True if touch detected, false otherwise.
 | 
			
		||||
     */
 | 
			
		||||
    bool doSampleTouch(int32_t& x, int32_t& y) const;
 | 
			
		||||
 | 
			
		||||
    virtual void setFrameBufferSize(uint16_t width, uint16_t height);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Initializes SDL.
 | 
			
		||||
     *
 | 
			
		||||
     * @param      argcount Number of arguments.
 | 
			
		||||
     * @param [in] args     Arguments.
 | 
			
		||||
     *
 | 
			
		||||
     * @return True if init went well, false otherwise.
 | 
			
		||||
     */
 | 
			
		||||
    virtual bool sdl_init(int argcount, char** args);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Sets window title.
 | 
			
		||||
     *
 | 
			
		||||
     * Sets window title of the TouchGFX simulator.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  title The title, if null the original "TouchGFX simulator" will be used.
 | 
			
		||||
     *
 | 
			
		||||
     * @see getWindowTitle
 | 
			
		||||
     */
 | 
			
		||||
    static void setWindowTitle(const char* title);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets window title.
 | 
			
		||||
     *
 | 
			
		||||
     * @return null "TouchGFX simulator" unless set to something else using setWindowTitle().
 | 
			
		||||
     *
 | 
			
		||||
     * @see setWindowTitle
 | 
			
		||||
     */
 | 
			
		||||
    static const char* getWindowTitle();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Loads a skin for a given display orientation that will be rendered in the simulator
 | 
			
		||||
     * window with the the TouchGFX framebuffer placed inside the bitmap at the given
 | 
			
		||||
     * coordinates. Different bitmaps can be loaded in landscape and portrait mode. If the
 | 
			
		||||
     * provided bitmap cannot be loaded, the TouchGFX framebuffer will be displayed as
 | 
			
		||||
     * normal. If the png files contain areas with alpha
 | 
			
		||||
     * < 255, this will be used to create a shaped window.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  orientation The orientation.
 | 
			
		||||
     * @param  x           The x coordinate.
 | 
			
		||||
     * @param  y           The y coordinate.
 | 
			
		||||
     *
 | 
			
		||||
     * @note The skins must be named "portrait.png" and "landscape.png" and placed inside the
 | 
			
		||||
     *       "simulator/" folder. The build process of the simulator will automatically
 | 
			
		||||
     *       copy the skins to the folder where the executable simulator is generated.
 | 
			
		||||
     * @note When as skin is set, the entire framebuffer is rendered through SDL whenever there is
 | 
			
		||||
     *       a change. Without a skin, only the areas with changes is rendered through SDL.
 | 
			
		||||
     */
 | 
			
		||||
    void loadSkin(DisplayOrientation orientation, int x, int y);
 | 
			
		||||
 | 
			
		||||
    /** Saves a screenshot to the default folder and default filename. */
 | 
			
		||||
    void saveScreenshot();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Copy the next N screenshots to disk. On each screen update, the new screen is saved
 | 
			
		||||
     * to disk.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  n Number of screenshots to save. These are added to any ongoing amount of
 | 
			
		||||
     *           screenshots in queue.
 | 
			
		||||
     */
 | 
			
		||||
    virtual void saveNextScreenshots(int n);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Saves a screenshot.
 | 
			
		||||
     *
 | 
			
		||||
     * @param [in] folder   Folder name to place the screenshot in.
 | 
			
		||||
     * @param [in] filename Filename to save the screenshot to.
 | 
			
		||||
     */
 | 
			
		||||
    virtual void saveScreenshot(char* folder, char* filename);
 | 
			
		||||
 | 
			
		||||
    /** Copies the screenshot to clipboard. */
 | 
			
		||||
    virtual void copyScreenshotToClipboard();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Flash invalidated areas on/off. The area that needs to be redrawn is flashed in grey to help
 | 
			
		||||
     * identify performance bottle necks.
 | 
			
		||||
     *
 | 
			
		||||
     * @param   flash   (Optional) True to flash the screen when updating.
 | 
			
		||||
     */
 | 
			
		||||
    virtual void setFlashInvalidatedAreas(bool flash = true);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Single stepping enable/disable. When single stepping is enabled, F10 will execute one
 | 
			
		||||
     * tick and F9 will disable single stepping.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  singleStepping (Optional) True to pause the simulation and start single stepping.
 | 
			
		||||
     *
 | 
			
		||||
     * @see isSingleStepping
 | 
			
		||||
     */
 | 
			
		||||
    static void setSingleStepping(bool singleStepping = true);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Is single stepping.
 | 
			
		||||
     *
 | 
			
		||||
     * @return True if single stepping, false if not.
 | 
			
		||||
     *
 | 
			
		||||
     * @see setSingleStepping
 | 
			
		||||
     */
 | 
			
		||||
    static bool isSingleStepping();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Single step a number of steps. Only works if single stepping is already enabled.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  steps (Optional) The steps Default is 1 step.
 | 
			
		||||
     *
 | 
			
		||||
     * @see setSingleStepping, isSingleStepping
 | 
			
		||||
     */
 | 
			
		||||
    static void singleStep(uint16_t steps = 1);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Terminate the application as quickly as possible
 | 
			
		||||
     */
 | 
			
		||||
    static void stopApplication();
 | 
			
		||||
 | 
			
		||||
#ifndef __linux__
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets the argc and argv for a Windows program.
 | 
			
		||||
     *
 | 
			
		||||
     * @param [in,out] argc Pointer to where to store number of arguments.
 | 
			
		||||
     *
 | 
			
		||||
     * @return The argv list of arguments.
 | 
			
		||||
     */
 | 
			
		||||
    static char** getArgv(int* argc);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Scale framebuffer to 24bpp. The format of the framebuffer (src) is given in parameter
 | 
			
		||||
     * format. The result is placed in the pre-allocated memory pointed to by parameter dst.
 | 
			
		||||
     * If the framebuffer is in format Bitmap::RGB888, parameter dst is not used and the
 | 
			
		||||
     * parameter src is simply returned.
 | 
			
		||||
     *
 | 
			
		||||
     * @param [in]  src    The framebuffer.
 | 
			
		||||
     * @param       format Describes the format of the framebuffer (lcd().framebufferFormat()).
 | 
			
		||||
     *
 | 
			
		||||
     * @return Null if it fails, else a pointer to an uint8_t.
 | 
			
		||||
     */
 | 
			
		||||
    static uint8_t* scaleTo24bpp(uint16_t* src, Bitmap::BitmapFormat format);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Rotates a framebuffer if the display is rotated.
 | 
			
		||||
     *
 | 
			
		||||
     * @param [in]  src The framebuffer.
 | 
			
		||||
     *
 | 
			
		||||
     * @return Null if it fails, else a pointer to an uint8_t.
 | 
			
		||||
     */
 | 
			
		||||
    static uint8_t* doRotate(uint8_t* src);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Change visibility of window (hidden vs. shown) as well as (due to
 | 
			
		||||
     * backward compatibility) the visibility of the console window.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  visible      Should the window be visible?
 | 
			
		||||
     * @param  redrawWindow (Optional) Should the window be redrawn? Default is true.
 | 
			
		||||
     *
 | 
			
		||||
     * @see getWindowVisible, setConsoleVisible
 | 
			
		||||
     */
 | 
			
		||||
    void setWindowVisible(bool visible, bool redrawWindow = true)
 | 
			
		||||
    {
 | 
			
		||||
        isWindowVisible = visible;
 | 
			
		||||
        isConsoleVisible = visible;
 | 
			
		||||
        if (redrawWindow)
 | 
			
		||||
        {
 | 
			
		||||
            recreateWindow();
 | 
			
		||||
            simulator_enable_stdio();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Is the window visible?
 | 
			
		||||
     *
 | 
			
		||||
     * @return True if it is visible, false if it is hidden.
 | 
			
		||||
     *
 | 
			
		||||
     * @see setWindowVisible, getConsoleVisible
 | 
			
		||||
     */
 | 
			
		||||
    bool getWindowVisible() const
 | 
			
		||||
    {
 | 
			
		||||
        return isWindowVisible;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Change visibility of console window (hidden vs. shown).
 | 
			
		||||
     *
 | 
			
		||||
     * @param  visible      Should the window be visible?
 | 
			
		||||
     * @param  redrawWindow (Optional) Should the window be redrawn? Default is true.
 | 
			
		||||
     *
 | 
			
		||||
     * @see setWindowVisible, getConsoleVisible
 | 
			
		||||
     */
 | 
			
		||||
    void setConsoleVisible(bool visible, bool redrawWindow = true)
 | 
			
		||||
    {
 | 
			
		||||
        isConsoleVisible = visible;
 | 
			
		||||
        if (redrawWindow)
 | 
			
		||||
        {
 | 
			
		||||
            recreateWindow();
 | 
			
		||||
            touchgfx::simulator_enable_stdio();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Is console window visible?
 | 
			
		||||
     *
 | 
			
		||||
     * @return True if it is visible, false if it is hidden.
 | 
			
		||||
     *
 | 
			
		||||
     * @see setConsoleVisible, getWindowVisible
 | 
			
		||||
     */
 | 
			
		||||
    bool getConsoleVisible() const
 | 
			
		||||
    {
 | 
			
		||||
        return isConsoleVisible;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Also write touchgfx_printf() to a file. The file will be generated (no appended to).
 | 
			
		||||
     *
 | 
			
		||||
     * @param filename The name of the file to write to (or null to stop writing to a file).
 | 
			
		||||
     *
 | 
			
		||||
     * @return True if the operation succeeds, false otherwise.
 | 
			
		||||
     */
 | 
			
		||||
    bool printToFile(const char* filename);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Get file handle to output file (if set).
 | 
			
		||||
     *
 | 
			
		||||
     * @return A file handle to the file where output is copied to.
 | 
			
		||||
     *
 | 
			
		||||
     * @see printToFile
 | 
			
		||||
     */
 | 
			
		||||
    FILE* getPrintFile() const
 | 
			
		||||
    {
 | 
			
		||||
        return printFile;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Generate name of file placed next to the simulator.
 | 
			
		||||
     *
 | 
			
		||||
     * @param [in]  buffer      If the buffer to fill with the local filename. Must be at least
 | 
			
		||||
     *                          300+length of filename parameter.
 | 
			
		||||
     * @param       buffer_size The size of the buffer in bytes.
 | 
			
		||||
     * @param [in]  filename    The filename relative to the simulator executable.
 | 
			
		||||
     *
 | 
			
		||||
     * @return  The filled buffer.
 | 
			
		||||
     */
 | 
			
		||||
    char* localFileName(char* buffer, size_t buffer_size, const char* filename);
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets TFT framebuffer.
 | 
			
		||||
     *
 | 
			
		||||
     * @return null if it fails, else the TFT framebuffer.
 | 
			
		||||
     */
 | 
			
		||||
    virtual uint16_t* getTFTFrameBuffer() const;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Sets TFT framebuffer.
 | 
			
		||||
     *
 | 
			
		||||
     * @param [in] addr The address of the TFT framebuffer.
 | 
			
		||||
     */
 | 
			
		||||
    void setTFTFrameBuffer(uint16_t* addr);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Update framebuffer using an SDL Surface.
 | 
			
		||||
     *
 | 
			
		||||
     * @param      _rectToUpdate Area to update.
 | 
			
		||||
     * @param [in] frameBuffer   Target framebuffer.
 | 
			
		||||
     */
 | 
			
		||||
    virtual void renderLCD_FrameBufferToMemory(const Rect& _rectToUpdate, uint8_t* frameBuffer);
 | 
			
		||||
 | 
			
		||||
    /** Disables the DMA and LCD interrupts. */
 | 
			
		||||
    virtual void disableInterrupts()
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** Enables the DMA and LCD interrupts. */
 | 
			
		||||
    virtual void enableInterrupts()
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** Configures LCD interrupt. */
 | 
			
		||||
    virtual void configureLCDInterrupt()
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** Enables the LCD interrupt. */
 | 
			
		||||
    virtual void enableLCDControllerInterrupt()
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Configures the interrupts relevant for TouchGFX. This primarily entails setting the
 | 
			
		||||
     * interrupt priorities for the DMA and LCD interrupts.
 | 
			
		||||
     */
 | 
			
		||||
    virtual void configureInterrupts()
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** Perform the actual display orientation change. */
 | 
			
		||||
    void performDisplayOrientationChange();
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    void recreateWindow(bool updateContent = true);
 | 
			
		||||
    void pushTouch(bool down) const;
 | 
			
		||||
    bool popTouch() const;
 | 
			
		||||
    static void updateTitle();
 | 
			
		||||
    void alphaChannelCheck(SDL_Surface* surface, bool& isOpaque, bool& hasSemiTransparency);
 | 
			
		||||
    void updateCurrentSkin();
 | 
			
		||||
    int getCurrentSkinX() const;
 | 
			
		||||
    int getCurrentSkinY() const;
 | 
			
		||||
 | 
			
		||||
    static bool debugInfoEnabled;
 | 
			
		||||
 | 
			
		||||
    float msBetweenTicks;
 | 
			
		||||
    float msPassed;
 | 
			
		||||
 | 
			
		||||
    static uint16_t icon[];
 | 
			
		||||
    static const char* customTitle;
 | 
			
		||||
 | 
			
		||||
    class SkinInfo
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        SDL_Surface* surface;
 | 
			
		||||
        bool isOpaque;
 | 
			
		||||
        bool hasSemiTransparency;
 | 
			
		||||
        int offsetX;
 | 
			
		||||
        int offsetY;
 | 
			
		||||
 | 
			
		||||
        SkinInfo()
 | 
			
		||||
            : surface(0), isOpaque(true), hasSemiTransparency(false), offsetX(0), offsetY(0)
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        virtual ~SkinInfo()
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    char programPath[300];
 | 
			
		||||
    SkinInfo portraitSkin;
 | 
			
		||||
    SkinInfo landscapeSkin;
 | 
			
		||||
    SkinInfo* currentSkin;
 | 
			
		||||
    bool isSkinActive;
 | 
			
		||||
    bool isWindowBorderless;
 | 
			
		||||
    bool isWindowVisible;
 | 
			
		||||
    bool isConsoleVisible;
 | 
			
		||||
    FILE* printFile;
 | 
			
		||||
    static bool flashInvalidatedRect;
 | 
			
		||||
 | 
			
		||||
    bool windowDrag;
 | 
			
		||||
    int windowDragX;
 | 
			
		||||
    int windowDragY;
 | 
			
		||||
 | 
			
		||||
    static int32_t _xMouse;
 | 
			
		||||
    static int32_t _yMouse;
 | 
			
		||||
    static int32_t _x;
 | 
			
		||||
    static int32_t _y;
 | 
			
		||||
    static bool isWindowBeingDragged;
 | 
			
		||||
    static int initialWindowX;
 | 
			
		||||
    static int initialWindowY;
 | 
			
		||||
    static int initialMouseX;
 | 
			
		||||
    static int initialMouseY;
 | 
			
		||||
    static bool _lastTouch;
 | 
			
		||||
    static bool _touches[5];
 | 
			
		||||
    static int _numTouches;
 | 
			
		||||
 | 
			
		||||
    static uint8_t keyPressed;
 | 
			
		||||
 | 
			
		||||
    static bool singleSteppingEnabled;
 | 
			
		||||
    static uint16_t singleSteppingSteps;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace touchgfx
 | 
			
		||||
 | 
			
		||||
#endif // TOUCHGFX_HALSDL2_HPP
 | 
			
		||||
							
								
								
									
										132
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										132
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,132 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Main include header for the SDL library
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_H
 | 
			
		||||
#define _SDL_H
 | 
			
		||||
 | 
			
		||||
#include "SDL_main.h"
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
#include "SDL_assert.h"
 | 
			
		||||
#include "SDL_atomic.h"
 | 
			
		||||
#include "SDL_audio.h"
 | 
			
		||||
#include "SDL_clipboard.h"
 | 
			
		||||
#include "SDL_cpuinfo.h"
 | 
			
		||||
#include "SDL_endian.h"
 | 
			
		||||
#include "SDL_error.h"
 | 
			
		||||
#include "SDL_events.h"
 | 
			
		||||
#include "SDL_filesystem.h"
 | 
			
		||||
#include "SDL_joystick.h"
 | 
			
		||||
#include "SDL_gamecontroller.h"
 | 
			
		||||
#include "SDL_haptic.h"
 | 
			
		||||
#include "SDL_hints.h"
 | 
			
		||||
#include "SDL_loadso.h"
 | 
			
		||||
#include "SDL_log.h"
 | 
			
		||||
#include "SDL_messagebox.h"
 | 
			
		||||
#include "SDL_mutex.h"
 | 
			
		||||
#include "SDL_power.h"
 | 
			
		||||
#include "SDL_render.h"
 | 
			
		||||
#include "SDL_rwops.h"
 | 
			
		||||
#include "SDL_system.h"
 | 
			
		||||
#include "SDL_thread.h"
 | 
			
		||||
#include "SDL_timer.h"
 | 
			
		||||
#include "SDL_version.h"
 | 
			
		||||
#include "SDL_video.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* As of version 0.5, SDL is loaded dynamically into the application */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name SDL_INIT_*
 | 
			
		||||
 *
 | 
			
		||||
 *  These are the flags which may be passed to SDL_Init().  You should
 | 
			
		||||
 *  specify the subsystems which you will be using in your application.
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
#define SDL_INIT_TIMER          0x00000001
 | 
			
		||||
#define SDL_INIT_AUDIO          0x00000010
 | 
			
		||||
#define SDL_INIT_VIDEO          0x00000020  /**< SDL_INIT_VIDEO implies SDL_INIT_EVENTS */
 | 
			
		||||
#define SDL_INIT_JOYSTICK       0x00000200  /**< SDL_INIT_JOYSTICK implies SDL_INIT_EVENTS */
 | 
			
		||||
#define SDL_INIT_HAPTIC         0x00001000
 | 
			
		||||
#define SDL_INIT_GAMECONTROLLER 0x00002000  /**< SDL_INIT_GAMECONTROLLER implies SDL_INIT_JOYSTICK */
 | 
			
		||||
#define SDL_INIT_EVENTS         0x00004000
 | 
			
		||||
#define SDL_INIT_NOPARACHUTE    0x00100000  /**< compatibility; this flag is ignored. */
 | 
			
		||||
#define SDL_INIT_EVERYTHING ( \
 | 
			
		||||
                SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_EVENTS | \
 | 
			
		||||
                SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_GAMECONTROLLER \
 | 
			
		||||
            )
 | 
			
		||||
/* @} */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function initializes  the subsystems specified by \c flags
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_Init(Uint32 flags);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function initializes specific SDL subsystems
 | 
			
		||||
 *
 | 
			
		||||
 *  Subsystem initialization is ref-counted, you must call
 | 
			
		||||
 *  SDL_QuitSubSystem for each SDL_InitSubSystem to correctly
 | 
			
		||||
 *  shutdown a subsystem manually (or call SDL_Quit to force shutdown).
 | 
			
		||||
 *  If a subsystem is already loaded then this call will
 | 
			
		||||
 *  increase the ref-count and return.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_InitSubSystem(Uint32 flags);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function cleans up specific SDL subsystems
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_QuitSubSystem(Uint32 flags);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns a mask of the specified subsystems which have
 | 
			
		||||
 *  previously been initialized.
 | 
			
		||||
 *
 | 
			
		||||
 *  If \c flags is 0, it returns a mask of all initialized subsystems.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC Uint32 SDLCALL SDL_WasInit(Uint32 flags);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function cleans up all initialized subsystems. You should
 | 
			
		||||
 *  call it upon all exit conditions.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_Quit(void);
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_H */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
							
								
								
									
										289
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_assert.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										289
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_assert.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,289 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_assert_h
 | 
			
		||||
#define _SDL_assert_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_config.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef SDL_ASSERT_LEVEL
 | 
			
		||||
#ifdef SDL_DEFAULT_ASSERT_LEVEL
 | 
			
		||||
#define SDL_ASSERT_LEVEL SDL_DEFAULT_ASSERT_LEVEL
 | 
			
		||||
#elif defined(_DEBUG) || defined(DEBUG) || \
 | 
			
		||||
      (defined(__GNUC__) && !defined(__OPTIMIZE__))
 | 
			
		||||
#define SDL_ASSERT_LEVEL 2
 | 
			
		||||
#else
 | 
			
		||||
#define SDL_ASSERT_LEVEL 1
 | 
			
		||||
#endif
 | 
			
		||||
#endif /* SDL_ASSERT_LEVEL */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
These are macros and not first class functions so that the debugger breaks
 | 
			
		||||
on the assertion line and not in some random guts of SDL, and so each
 | 
			
		||||
assert can have unique static variables associated with it.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#if defined(_MSC_VER)
 | 
			
		||||
/* Don't include intrin.h here because it contains C++ code */
 | 
			
		||||
    extern void __cdecl __debugbreak(void);
 | 
			
		||||
    #define SDL_TriggerBreakpoint() __debugbreak()
 | 
			
		||||
#elif (!defined(__NACL__) && defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)))
 | 
			
		||||
    #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "int $3\n\t" )
 | 
			
		||||
#elif defined(HAVE_SIGNAL_H)
 | 
			
		||||
    #include <signal.h>
 | 
			
		||||
    #define SDL_TriggerBreakpoint() raise(SIGTRAP)
 | 
			
		||||
#else
 | 
			
		||||
    /* How do we trigger breakpoints on this platform? */
 | 
			
		||||
    #define SDL_TriggerBreakpoint()
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 supports __func__ as a standard. */
 | 
			
		||||
#   define SDL_FUNCTION __func__
 | 
			
		||||
#elif ((__GNUC__ >= 2) || defined(_MSC_VER))
 | 
			
		||||
#   define SDL_FUNCTION __FUNCTION__
 | 
			
		||||
#else
 | 
			
		||||
#   define SDL_FUNCTION "???"
 | 
			
		||||
#endif
 | 
			
		||||
#define SDL_FILE    __FILE__
 | 
			
		||||
#define SDL_LINE    __LINE__
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
sizeof (x) makes the compiler still parse the expression even without
 | 
			
		||||
assertions enabled, so the code is always checked at compile time, but
 | 
			
		||||
doesn't actually generate code for it, so there are no side effects or
 | 
			
		||||
expensive checks at run time, just the constant size of what x WOULD be,
 | 
			
		||||
which presumably gets optimized out as unused.
 | 
			
		||||
This also solves the problem of...
 | 
			
		||||
 | 
			
		||||
    int somevalue = blah();
 | 
			
		||||
    SDL_assert(somevalue == 1);
 | 
			
		||||
 | 
			
		||||
...which would cause compiles to complain that somevalue is unused if we
 | 
			
		||||
disable assertions.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/* "while (0,0)" fools Microsoft's compiler's /W4 warning level into thinking
 | 
			
		||||
    this condition isn't constant. And looks like an owl's face! */
 | 
			
		||||
#ifdef _MSC_VER  /* stupid /W4 warnings. */
 | 
			
		||||
#define SDL_NULL_WHILE_LOOP_CONDITION (0,0)
 | 
			
		||||
#else
 | 
			
		||||
#define SDL_NULL_WHILE_LOOP_CONDITION (0)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define SDL_disabled_assert(condition) \
 | 
			
		||||
    do { (void) sizeof ((condition)); } while (SDL_NULL_WHILE_LOOP_CONDITION)
 | 
			
		||||
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_ASSERTION_RETRY,  /**< Retry the assert immediately. */
 | 
			
		||||
    SDL_ASSERTION_BREAK,  /**< Make the debugger trigger a breakpoint. */
 | 
			
		||||
    SDL_ASSERTION_ABORT,  /**< Terminate the program. */
 | 
			
		||||
    SDL_ASSERTION_IGNORE,  /**< Ignore the assert. */
 | 
			
		||||
    SDL_ASSERTION_ALWAYS_IGNORE  /**< Ignore the assert from now on. */
 | 
			
		||||
} SDL_AssertState;
 | 
			
		||||
 | 
			
		||||
typedef struct SDL_AssertData
 | 
			
		||||
{
 | 
			
		||||
    int always_ignore;
 | 
			
		||||
    unsigned int trigger_count;
 | 
			
		||||
    const char *condition;
 | 
			
		||||
    const char *filename;
 | 
			
		||||
    int linenum;
 | 
			
		||||
    const char *function;
 | 
			
		||||
    const struct SDL_AssertData *next;
 | 
			
		||||
} SDL_AssertData;
 | 
			
		||||
 | 
			
		||||
#if (SDL_ASSERT_LEVEL > 0)
 | 
			
		||||
 | 
			
		||||
/* Never call this directly. Use the SDL_assert* macros. */
 | 
			
		||||
extern DECLSPEC SDL_AssertState SDLCALL SDL_ReportAssertion(SDL_AssertData *,
 | 
			
		||||
                                                             const char *,
 | 
			
		||||
                                                             const char *, int)
 | 
			
		||||
#if defined(__clang__)
 | 
			
		||||
#if __has_feature(attribute_analyzer_noreturn)
 | 
			
		||||
/* this tells Clang's static analysis that we're a custom assert function,
 | 
			
		||||
   and that the analyzer should assume the condition was always true past this
 | 
			
		||||
   SDL_assert test. */
 | 
			
		||||
   __attribute__((analyzer_noreturn))
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
;
 | 
			
		||||
 | 
			
		||||
/* the do {} while(0) avoids dangling else problems:
 | 
			
		||||
    if (x) SDL_assert(y); else blah();
 | 
			
		||||
       ... without the do/while, the "else" could attach to this macro's "if".
 | 
			
		||||
   We try to handle just the minimum we need here in a macro...the loop,
 | 
			
		||||
   the static vars, and break points. The heavy lifting is handled in
 | 
			
		||||
   SDL_ReportAssertion(), in SDL_assert.c.
 | 
			
		||||
*/
 | 
			
		||||
#define SDL_enabled_assert(condition) \
 | 
			
		||||
    do { \
 | 
			
		||||
        while ( !(condition) ) { \
 | 
			
		||||
            static struct SDL_AssertData sdl_assert_data = { \
 | 
			
		||||
                0, 0, #condition, 0, 0, 0, 0 \
 | 
			
		||||
            }; \
 | 
			
		||||
            const SDL_AssertState sdl_assert_state = SDL_ReportAssertion(&sdl_assert_data, SDL_FUNCTION, SDL_FILE, SDL_LINE); \
 | 
			
		||||
            if (sdl_assert_state == SDL_ASSERTION_RETRY) { \
 | 
			
		||||
                continue; /* go again. */ \
 | 
			
		||||
            } else if (sdl_assert_state == SDL_ASSERTION_BREAK) { \
 | 
			
		||||
                SDL_TriggerBreakpoint(); \
 | 
			
		||||
            } \
 | 
			
		||||
            break; /* not retrying. */ \
 | 
			
		||||
        } \
 | 
			
		||||
    } while (SDL_NULL_WHILE_LOOP_CONDITION)
 | 
			
		||||
 | 
			
		||||
#endif  /* enabled assertions support code */
 | 
			
		||||
 | 
			
		||||
/* Enable various levels of assertions. */
 | 
			
		||||
#if SDL_ASSERT_LEVEL == 0   /* assertions disabled */
 | 
			
		||||
#   define SDL_assert(condition) SDL_disabled_assert(condition)
 | 
			
		||||
#   define SDL_assert_release(condition) SDL_disabled_assert(condition)
 | 
			
		||||
#   define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)
 | 
			
		||||
#elif SDL_ASSERT_LEVEL == 1  /* release settings. */
 | 
			
		||||
#   define SDL_assert(condition) SDL_disabled_assert(condition)
 | 
			
		||||
#   define SDL_assert_release(condition) SDL_enabled_assert(condition)
 | 
			
		||||
#   define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)
 | 
			
		||||
#elif SDL_ASSERT_LEVEL == 2  /* normal settings. */
 | 
			
		||||
#   define SDL_assert(condition) SDL_enabled_assert(condition)
 | 
			
		||||
#   define SDL_assert_release(condition) SDL_enabled_assert(condition)
 | 
			
		||||
#   define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)
 | 
			
		||||
#elif SDL_ASSERT_LEVEL == 3  /* paranoid settings. */
 | 
			
		||||
#   define SDL_assert(condition) SDL_enabled_assert(condition)
 | 
			
		||||
#   define SDL_assert_release(condition) SDL_enabled_assert(condition)
 | 
			
		||||
#   define SDL_assert_paranoid(condition) SDL_enabled_assert(condition)
 | 
			
		||||
#else
 | 
			
		||||
#   error Unknown assertion level.
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* this assertion is never disabled at any level. */
 | 
			
		||||
#define SDL_assert_always(condition) SDL_enabled_assert(condition)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
typedef SDL_AssertState (SDLCALL *SDL_AssertionHandler)(
 | 
			
		||||
                                 const SDL_AssertData* data, void* userdata);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Set an application-defined assertion handler.
 | 
			
		||||
 *
 | 
			
		||||
 *  This allows an app to show its own assertion UI and/or force the
 | 
			
		||||
 *  response to an assertion failure. If the app doesn't provide this, SDL
 | 
			
		||||
 *  will try to do the right thing, popping up a system-specific GUI dialog,
 | 
			
		||||
 *  and probably minimizing any fullscreen windows.
 | 
			
		||||
 *
 | 
			
		||||
 *  This callback may fire from any thread, but it runs wrapped in a mutex, so
 | 
			
		||||
 *  it will only fire from one thread at a time.
 | 
			
		||||
 *
 | 
			
		||||
 *  Setting the callback to NULL restores SDL's original internal handler.
 | 
			
		||||
 *
 | 
			
		||||
 *  This callback is NOT reset to SDL's internal handler upon SDL_Quit()!
 | 
			
		||||
 *
 | 
			
		||||
 *  \return SDL_AssertState value of how to handle the assertion failure.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param handler Callback function, called when an assertion fails.
 | 
			
		||||
 *  \param userdata A pointer passed to the callback as-is.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_SetAssertionHandler(
 | 
			
		||||
                                            SDL_AssertionHandler handler,
 | 
			
		||||
                                            void *userdata);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Get the default assertion handler.
 | 
			
		||||
 *
 | 
			
		||||
 *  This returns the function pointer that is called by default when an
 | 
			
		||||
 *   assertion is triggered. This is an internal function provided by SDL,
 | 
			
		||||
 *   that is used for assertions when SDL_SetAssertionHandler() hasn't been
 | 
			
		||||
 *   used to provide a different function.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return The default SDL_AssertionHandler that is called when an assert triggers.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetDefaultAssertionHandler(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Get the current assertion handler.
 | 
			
		||||
 *
 | 
			
		||||
 *  This returns the function pointer that is called when an assertion is
 | 
			
		||||
 *   triggered. This is either the value last passed to
 | 
			
		||||
 *   SDL_SetAssertionHandler(), or if no application-specified function is
 | 
			
		||||
 *   set, is equivalent to calling SDL_GetDefaultAssertionHandler().
 | 
			
		||||
 *
 | 
			
		||||
 *   \param puserdata Pointer to a void*, which will store the "userdata"
 | 
			
		||||
 *                    pointer that was passed to SDL_SetAssertionHandler().
 | 
			
		||||
 *                    This value will always be NULL for the default handler.
 | 
			
		||||
 *                    If you don't care about this data, it is safe to pass
 | 
			
		||||
 *                    a NULL pointer to this function to ignore it.
 | 
			
		||||
 *  \return The SDL_AssertionHandler that is called when an assert triggers.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetAssertionHandler(void **puserdata);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Get a list of all assertion failures.
 | 
			
		||||
 *
 | 
			
		||||
 *  Get all assertions triggered since last call to SDL_ResetAssertionReport(),
 | 
			
		||||
 *  or the start of the program.
 | 
			
		||||
 *
 | 
			
		||||
 *  The proper way to examine this data looks something like this:
 | 
			
		||||
 *
 | 
			
		||||
 *  <code>
 | 
			
		||||
 *  const SDL_AssertData *item = SDL_GetAssertionReport();
 | 
			
		||||
 *  while (item) {
 | 
			
		||||
 *      printf("'%s', %s (%s:%d), triggered %u times, always ignore: %s.\n",
 | 
			
		||||
 *             item->condition, item->function, item->filename,
 | 
			
		||||
 *             item->linenum, item->trigger_count,
 | 
			
		||||
 *             item->always_ignore ? "yes" : "no");
 | 
			
		||||
 *      item = item->next;
 | 
			
		||||
 *  }
 | 
			
		||||
 *  </code>
 | 
			
		||||
 *
 | 
			
		||||
 *  \return List of all assertions.
 | 
			
		||||
 *  \sa SDL_ResetAssertionReport
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC const SDL_AssertData * SDLCALL SDL_GetAssertionReport(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Reset the list of all assertion failures.
 | 
			
		||||
 *
 | 
			
		||||
 *  Reset list of all assertions triggered.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_GetAssertionReport
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_ResetAssertionReport(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* these had wrong naming conventions until 2.0.4. Please update your app! */
 | 
			
		||||
#define SDL_assert_state SDL_AssertState
 | 
			
		||||
#define SDL_assert_data SDL_AssertData
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_assert_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
							
								
								
									
										268
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_atomic.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										268
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_atomic.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,268 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \file SDL_atomic.h
 | 
			
		||||
 *
 | 
			
		||||
 * Atomic operations.
 | 
			
		||||
 *
 | 
			
		||||
 * IMPORTANT:
 | 
			
		||||
 * If you are not an expert in concurrent lockless programming, you should
 | 
			
		||||
 * only be using the atomic lock and reference counting functions in this
 | 
			
		||||
 * file.  In all other cases you should be protecting your data structures
 | 
			
		||||
 * with full mutexes.
 | 
			
		||||
 *
 | 
			
		||||
 * The list of "safe" functions to use are:
 | 
			
		||||
 *  SDL_AtomicLock()
 | 
			
		||||
 *  SDL_AtomicUnlock()
 | 
			
		||||
 *  SDL_AtomicIncRef()
 | 
			
		||||
 *  SDL_AtomicDecRef()
 | 
			
		||||
 *
 | 
			
		||||
 * Seriously, here be dragons!
 | 
			
		||||
 * ^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
			
		||||
 *
 | 
			
		||||
 * You can find out a little more about lockless programming and the
 | 
			
		||||
 * subtle issues that can arise here:
 | 
			
		||||
 * http://msdn.microsoft.com/en-us/library/ee418650%28v=vs.85%29.aspx
 | 
			
		||||
 *
 | 
			
		||||
 * There's also lots of good information here:
 | 
			
		||||
 * http://www.1024cores.net/home/lock-free-algorithms
 | 
			
		||||
 * http://preshing.com/
 | 
			
		||||
 *
 | 
			
		||||
 * These operations may or may not actually be implemented using
 | 
			
		||||
 * processor specific atomic operations. When possible they are
 | 
			
		||||
 * implemented as true processor specific atomic operations. When that
 | 
			
		||||
 * is not possible the are implemented using locks that *do* use the
 | 
			
		||||
 * available atomic operations.
 | 
			
		||||
 *
 | 
			
		||||
 * All of the atomic operations that modify memory are full memory barriers.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_atomic_h_
 | 
			
		||||
#define _SDL_atomic_h_
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
#include "SDL_platform.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \name SDL AtomicLock
 | 
			
		||||
 *
 | 
			
		||||
 * The atomic locks are efficient spinlocks using CPU instructions,
 | 
			
		||||
 * but are vulnerable to starvation and can spin forever if a thread
 | 
			
		||||
 * holding a lock has been terminated.  For this reason you should
 | 
			
		||||
 * minimize the code executed inside an atomic lock and never do
 | 
			
		||||
 * expensive things like API or system calls while holding them.
 | 
			
		||||
 *
 | 
			
		||||
 * The atomic locks are not safe to lock recursively.
 | 
			
		||||
 *
 | 
			
		||||
 * Porting Note:
 | 
			
		||||
 * The spin lock functions and type are required and can not be
 | 
			
		||||
 * emulated because they are used in the atomic emulation code.
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
 | 
			
		||||
typedef int SDL_SpinLock;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Try to lock a spin lock by setting it to a non-zero value.
 | 
			
		||||
 *
 | 
			
		||||
 * \param lock Points to the lock.
 | 
			
		||||
 *
 | 
			
		||||
 * \return SDL_TRUE if the lock succeeded, SDL_FALSE if the lock is already held.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_AtomicTryLock(SDL_SpinLock *lock);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Lock a spin lock by setting it to a non-zero value.
 | 
			
		||||
 *
 | 
			
		||||
 * \param lock Points to the lock.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_AtomicLock(SDL_SpinLock *lock);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Unlock a spin lock by setting it to 0. Always returns immediately
 | 
			
		||||
 *
 | 
			
		||||
 * \param lock Points to the lock.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_AtomicUnlock(SDL_SpinLock *lock);
 | 
			
		||||
 | 
			
		||||
/* @} *//* SDL AtomicLock */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * The compiler barrier prevents the compiler from reordering
 | 
			
		||||
 * reads and writes to globally visible variables across the call.
 | 
			
		||||
 */
 | 
			
		||||
#if defined(_MSC_VER) && (_MSC_VER > 1200)
 | 
			
		||||
void _ReadWriteBarrier(void);
 | 
			
		||||
#pragma intrinsic(_ReadWriteBarrier)
 | 
			
		||||
#define SDL_CompilerBarrier()   _ReadWriteBarrier()
 | 
			
		||||
#elif (defined(__GNUC__) && !defined(__EMSCRIPTEN__)) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120))
 | 
			
		||||
/* This is correct for all CPUs when using GCC or Solaris Studio 12.1+. */
 | 
			
		||||
#define SDL_CompilerBarrier()   __asm__ __volatile__ ("" : : : "memory")
 | 
			
		||||
#else
 | 
			
		||||
#define SDL_CompilerBarrier()   \
 | 
			
		||||
{ SDL_SpinLock _tmp = 0; SDL_AtomicLock(&_tmp); SDL_AtomicUnlock(&_tmp); }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Memory barriers are designed to prevent reads and writes from being
 | 
			
		||||
 * reordered by the compiler and being seen out of order on multi-core CPUs.
 | 
			
		||||
 *
 | 
			
		||||
 * A typical pattern would be for thread A to write some data and a flag,
 | 
			
		||||
 * and for thread B to read the flag and get the data. In this case you
 | 
			
		||||
 * would insert a release barrier between writing the data and the flag,
 | 
			
		||||
 * guaranteeing that the data write completes no later than the flag is
 | 
			
		||||
 * written, and you would insert an acquire barrier between reading the
 | 
			
		||||
 * flag and reading the data, to ensure that all the reads associated
 | 
			
		||||
 * with the flag have completed.
 | 
			
		||||
 *
 | 
			
		||||
 * In this pattern you should always see a release barrier paired with
 | 
			
		||||
 * an acquire barrier and you should gate the data reads/writes with a
 | 
			
		||||
 * single flag variable.
 | 
			
		||||
 *
 | 
			
		||||
 * For more information on these semantics, take a look at the blog post:
 | 
			
		||||
 * http://preshing.com/20120913/acquire-and-release-semantics
 | 
			
		||||
 */
 | 
			
		||||
#if defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__))
 | 
			
		||||
#define SDL_MemoryBarrierRelease()   __asm__ __volatile__ ("lwsync" : : : "memory")
 | 
			
		||||
#define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ ("lwsync" : : : "memory")
 | 
			
		||||
#elif defined(__GNUC__) && defined(__arm__)
 | 
			
		||||
#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__)
 | 
			
		||||
#define SDL_MemoryBarrierRelease()   __asm__ __volatile__ ("dmb ish" : : : "memory")
 | 
			
		||||
#define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ ("dmb ish" : : : "memory")
 | 
			
		||||
#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__)
 | 
			
		||||
#ifdef __thumb__
 | 
			
		||||
/* The mcr instruction isn't available in thumb mode, use real functions */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_MemoryBarrierRelease();
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_MemoryBarrierAcquire();
 | 
			
		||||
#else
 | 
			
		||||
#define SDL_MemoryBarrierRelease()   __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory")
 | 
			
		||||
#define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory")
 | 
			
		||||
#endif /* __thumb__ */
 | 
			
		||||
#else
 | 
			
		||||
#define SDL_MemoryBarrierRelease()   __asm__ __volatile__ ("" : : : "memory")
 | 
			
		||||
#define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ ("" : : : "memory")
 | 
			
		||||
#endif /* __GNUC__ && __arm__ */
 | 
			
		||||
#else
 | 
			
		||||
#if (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120))
 | 
			
		||||
/* This is correct for all CPUs on Solaris when using Solaris Studio 12.1+. */
 | 
			
		||||
#include <mbarrier.h>
 | 
			
		||||
#define SDL_MemoryBarrierRelease()  __machine_rel_barrier()
 | 
			
		||||
#define SDL_MemoryBarrierAcquire()  __machine_acq_barrier()
 | 
			
		||||
#else
 | 
			
		||||
/* This is correct for the x86 and x64 CPUs, and we'll expand this over time. */
 | 
			
		||||
#define SDL_MemoryBarrierRelease()  SDL_CompilerBarrier()
 | 
			
		||||
#define SDL_MemoryBarrierAcquire()  SDL_CompilerBarrier()
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief A type representing an atomic integer value.  It is a struct
 | 
			
		||||
 *        so people don't accidentally use numeric operations on it.
 | 
			
		||||
 */
 | 
			
		||||
typedef struct { int value; } SDL_atomic_t;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Set an atomic variable to a new value if it is currently an old value.
 | 
			
		||||
 *
 | 
			
		||||
 * \return SDL_TRUE if the atomic variable was set, SDL_FALSE otherwise.
 | 
			
		||||
 *
 | 
			
		||||
 * \note If you don't know what this function is for, you shouldn't use it!
 | 
			
		||||
*/
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCAS(SDL_atomic_t *a, int oldval, int newval);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Set an atomic variable to a value.
 | 
			
		||||
 *
 | 
			
		||||
 * \return The previous value of the atomic variable.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_AtomicSet(SDL_atomic_t *a, int v);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Get the value of an atomic variable
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_AtomicGet(SDL_atomic_t *a);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Add to an atomic variable.
 | 
			
		||||
 *
 | 
			
		||||
 * \return The previous value of the atomic variable.
 | 
			
		||||
 *
 | 
			
		||||
 * \note This same style can be used for any number operation
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_AtomicAdd(SDL_atomic_t *a, int v);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Increment an atomic variable used as a reference count.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef SDL_AtomicIncRef
 | 
			
		||||
#define SDL_AtomicIncRef(a)    SDL_AtomicAdd(a, 1)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Decrement an atomic variable used as a reference count.
 | 
			
		||||
 *
 | 
			
		||||
 * \return SDL_TRUE if the variable reached zero after decrementing,
 | 
			
		||||
 *         SDL_FALSE otherwise
 | 
			
		||||
 */
 | 
			
		||||
#ifndef SDL_AtomicDecRef
 | 
			
		||||
#define SDL_AtomicDecRef(a)    (SDL_AtomicAdd(a, -1) == 1)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Set a pointer to a new value if it is currently an old value.
 | 
			
		||||
 *
 | 
			
		||||
 * \return SDL_TRUE if the pointer was set, SDL_FALSE otherwise.
 | 
			
		||||
 *
 | 
			
		||||
 * \note If you don't know what this function is for, you shouldn't use it!
 | 
			
		||||
*/
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCASPtr(void **a, void *oldval, void *newval);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Set a pointer to a value atomically.
 | 
			
		||||
 *
 | 
			
		||||
 * \return The previous value of the pointer.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void* SDLCALL SDL_AtomicSetPtr(void **a, void* v);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Get the value of a pointer atomically.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void* SDLCALL SDL_AtomicGetPtr(void **a);
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_atomic_h_ */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
							
								
								
									
										605
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_audio.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										605
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_audio.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,605 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_audio.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Access to the raw audio mixing buffer for the SDL library.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_audio_h
 | 
			
		||||
#define _SDL_audio_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
#include "SDL_error.h"
 | 
			
		||||
#include "SDL_endian.h"
 | 
			
		||||
#include "SDL_mutex.h"
 | 
			
		||||
#include "SDL_thread.h"
 | 
			
		||||
#include "SDL_rwops.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Audio format flags.
 | 
			
		||||
 *
 | 
			
		||||
 *  These are what the 16 bits in SDL_AudioFormat currently mean...
 | 
			
		||||
 *  (Unspecified bits are always zero).
 | 
			
		||||
 *
 | 
			
		||||
 *  \verbatim
 | 
			
		||||
    ++-----------------------sample is signed if set
 | 
			
		||||
    ||
 | 
			
		||||
    ||       ++-----------sample is bigendian if set
 | 
			
		||||
    ||       ||
 | 
			
		||||
    ||       ||          ++---sample is float if set
 | 
			
		||||
    ||       ||          ||
 | 
			
		||||
    ||       ||          || +---sample bit size---+
 | 
			
		||||
    ||       ||          || |                     |
 | 
			
		||||
    15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
 | 
			
		||||
    \endverbatim
 | 
			
		||||
 *
 | 
			
		||||
 *  There are macros in SDL 2.0 and later to query these bits.
 | 
			
		||||
 */
 | 
			
		||||
typedef Uint16 SDL_AudioFormat;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name Audio flags
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
 | 
			
		||||
#define SDL_AUDIO_MASK_BITSIZE       (0xFF)
 | 
			
		||||
#define SDL_AUDIO_MASK_DATATYPE      (1<<8)
 | 
			
		||||
#define SDL_AUDIO_MASK_ENDIAN        (1<<12)
 | 
			
		||||
#define SDL_AUDIO_MASK_SIGNED        (1<<15)
 | 
			
		||||
#define SDL_AUDIO_BITSIZE(x)         (x & SDL_AUDIO_MASK_BITSIZE)
 | 
			
		||||
#define SDL_AUDIO_ISFLOAT(x)         (x & SDL_AUDIO_MASK_DATATYPE)
 | 
			
		||||
#define SDL_AUDIO_ISBIGENDIAN(x)     (x & SDL_AUDIO_MASK_ENDIAN)
 | 
			
		||||
#define SDL_AUDIO_ISSIGNED(x)        (x & SDL_AUDIO_MASK_SIGNED)
 | 
			
		||||
#define SDL_AUDIO_ISINT(x)           (!SDL_AUDIO_ISFLOAT(x))
 | 
			
		||||
#define SDL_AUDIO_ISLITTLEENDIAN(x)  (!SDL_AUDIO_ISBIGENDIAN(x))
 | 
			
		||||
#define SDL_AUDIO_ISUNSIGNED(x)      (!SDL_AUDIO_ISSIGNED(x))
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name Audio format flags
 | 
			
		||||
 *
 | 
			
		||||
 *  Defaults to LSB byte order.
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
#define AUDIO_U8        0x0008  /**< Unsigned 8-bit samples */
 | 
			
		||||
#define AUDIO_S8        0x8008  /**< Signed 8-bit samples */
 | 
			
		||||
#define AUDIO_U16LSB    0x0010  /**< Unsigned 16-bit samples */
 | 
			
		||||
#define AUDIO_S16LSB    0x8010  /**< Signed 16-bit samples */
 | 
			
		||||
#define AUDIO_U16MSB    0x1010  /**< As above, but big-endian byte order */
 | 
			
		||||
#define AUDIO_S16MSB    0x9010  /**< As above, but big-endian byte order */
 | 
			
		||||
#define AUDIO_U16       AUDIO_U16LSB
 | 
			
		||||
#define AUDIO_S16       AUDIO_S16LSB
 | 
			
		||||
/* @} */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name int32 support
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
#define AUDIO_S32LSB    0x8020  /**< 32-bit integer samples */
 | 
			
		||||
#define AUDIO_S32MSB    0x9020  /**< As above, but big-endian byte order */
 | 
			
		||||
#define AUDIO_S32       AUDIO_S32LSB
 | 
			
		||||
/* @} */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name float32 support
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
#define AUDIO_F32LSB    0x8120  /**< 32-bit floating point samples */
 | 
			
		||||
#define AUDIO_F32MSB    0x9120  /**< As above, but big-endian byte order */
 | 
			
		||||
#define AUDIO_F32       AUDIO_F32LSB
 | 
			
		||||
/* @} */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name Native audio byte ordering
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
#if SDL_BYTEORDER == SDL_LIL_ENDIAN
 | 
			
		||||
#define AUDIO_U16SYS    AUDIO_U16LSB
 | 
			
		||||
#define AUDIO_S16SYS    AUDIO_S16LSB
 | 
			
		||||
#define AUDIO_S32SYS    AUDIO_S32LSB
 | 
			
		||||
#define AUDIO_F32SYS    AUDIO_F32LSB
 | 
			
		||||
#else
 | 
			
		||||
#define AUDIO_U16SYS    AUDIO_U16MSB
 | 
			
		||||
#define AUDIO_S16SYS    AUDIO_S16MSB
 | 
			
		||||
#define AUDIO_S32SYS    AUDIO_S32MSB
 | 
			
		||||
#define AUDIO_F32SYS    AUDIO_F32MSB
 | 
			
		||||
#endif
 | 
			
		||||
/* @} */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name Allow change flags
 | 
			
		||||
 *
 | 
			
		||||
 *  Which audio format changes are allowed when opening a device.
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
#define SDL_AUDIO_ALLOW_FREQUENCY_CHANGE    0x00000001
 | 
			
		||||
#define SDL_AUDIO_ALLOW_FORMAT_CHANGE       0x00000002
 | 
			
		||||
#define SDL_AUDIO_ALLOW_CHANNELS_CHANGE     0x00000004
 | 
			
		||||
#define SDL_AUDIO_ALLOW_ANY_CHANGE          (SDL_AUDIO_ALLOW_FREQUENCY_CHANGE|SDL_AUDIO_ALLOW_FORMAT_CHANGE|SDL_AUDIO_ALLOW_CHANNELS_CHANGE)
 | 
			
		||||
/* @} */
 | 
			
		||||
 | 
			
		||||
/* @} *//* Audio flags */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function is called when the audio device needs more data.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param userdata An application-specific parameter saved in
 | 
			
		||||
 *                  the SDL_AudioSpec structure
 | 
			
		||||
 *  \param stream A pointer to the audio data buffer.
 | 
			
		||||
 *  \param len    The length of that buffer in bytes.
 | 
			
		||||
 *
 | 
			
		||||
 *  Once the callback returns, the buffer will no longer be valid.
 | 
			
		||||
 *  Stereo samples are stored in a LRLRLR ordering.
 | 
			
		||||
 *
 | 
			
		||||
 *  You can choose to avoid callbacks and use SDL_QueueAudio() instead, if
 | 
			
		||||
 *  you like. Just open your audio device with a NULL callback.
 | 
			
		||||
 */
 | 
			
		||||
typedef void (SDLCALL * SDL_AudioCallback) (void *userdata, Uint8 * stream,
 | 
			
		||||
                                            int len);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  The calculated values in this structure are calculated by SDL_OpenAudio().
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_AudioSpec
 | 
			
		||||
{
 | 
			
		||||
    int freq;                   /**< DSP frequency -- samples per second */
 | 
			
		||||
    SDL_AudioFormat format;     /**< Audio data format */
 | 
			
		||||
    Uint8 channels;             /**< Number of channels: 1 mono, 2 stereo */
 | 
			
		||||
    Uint8 silence;              /**< Audio buffer silence value (calculated) */
 | 
			
		||||
    Uint16 samples;             /**< Audio buffer size in samples (power of 2) */
 | 
			
		||||
    Uint16 padding;             /**< Necessary for some compile environments */
 | 
			
		||||
    Uint32 size;                /**< Audio buffer size in bytes (calculated) */
 | 
			
		||||
    SDL_AudioCallback callback; /**< Callback that feeds the audio device (NULL to use SDL_QueueAudio()). */
 | 
			
		||||
    void *userdata;             /**< Userdata passed to callback (ignored for NULL callbacks). */
 | 
			
		||||
} SDL_AudioSpec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
struct SDL_AudioCVT;
 | 
			
		||||
typedef void (SDLCALL * SDL_AudioFilter) (struct SDL_AudioCVT * cvt,
 | 
			
		||||
                                          SDL_AudioFormat format);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  A structure to hold a set of audio conversion filters and buffers.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef __GNUC__
 | 
			
		||||
/* This structure is 84 bytes on 32-bit architectures, make sure GCC doesn't
 | 
			
		||||
   pad it out to 88 bytes to guarantee ABI compatibility between compilers.
 | 
			
		||||
   vvv
 | 
			
		||||
   The next time we rev the ABI, make sure to size the ints and add padding.
 | 
			
		||||
*/
 | 
			
		||||
#define SDL_AUDIOCVT_PACKED __attribute__((packed))
 | 
			
		||||
#else
 | 
			
		||||
#define SDL_AUDIOCVT_PACKED
 | 
			
		||||
#endif
 | 
			
		||||
/* */
 | 
			
		||||
typedef struct SDL_AudioCVT
 | 
			
		||||
{
 | 
			
		||||
    int needed;                 /**< Set to 1 if conversion possible */
 | 
			
		||||
    SDL_AudioFormat src_format; /**< Source audio format */
 | 
			
		||||
    SDL_AudioFormat dst_format; /**< Target audio format */
 | 
			
		||||
    double rate_incr;           /**< Rate conversion increment */
 | 
			
		||||
    Uint8 *buf;                 /**< Buffer to hold entire audio data */
 | 
			
		||||
    int len;                    /**< Length of original audio buffer */
 | 
			
		||||
    int len_cvt;                /**< Length of converted audio buffer */
 | 
			
		||||
    int len_mult;               /**< buffer must be len*len_mult big */
 | 
			
		||||
    double len_ratio;           /**< Given len, final size is len*len_ratio */
 | 
			
		||||
    SDL_AudioFilter filters[10];        /**< Filter list */
 | 
			
		||||
    int filter_index;           /**< Current audio conversion function */
 | 
			
		||||
} SDL_AUDIOCVT_PACKED SDL_AudioCVT;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Function prototypes */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name Driver discovery functions
 | 
			
		||||
 *
 | 
			
		||||
 *  These functions return the list of built in audio drivers, in the
 | 
			
		||||
 *  order that they are normally initialized by default.
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_GetNumAudioDrivers(void);
 | 
			
		||||
extern DECLSPEC const char *SDLCALL SDL_GetAudioDriver(int index);
 | 
			
		||||
/* @} */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name Initialization and cleanup
 | 
			
		||||
 *
 | 
			
		||||
 *  \internal These functions are used internally, and should not be used unless
 | 
			
		||||
 *            you have a specific need to specify the audio driver you want to
 | 
			
		||||
 *            use.  You should normally use SDL_Init() or SDL_InitSubSystem().
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_AudioInit(const char *driver_name);
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_AudioQuit(void);
 | 
			
		||||
/* @} */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns the name of the current audio driver, or NULL
 | 
			
		||||
 *  if no driver has been initialized.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC const char *SDLCALL SDL_GetCurrentAudioDriver(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function opens the audio device with the desired parameters, and
 | 
			
		||||
 *  returns 0 if successful, placing the actual hardware parameters in the
 | 
			
		||||
 *  structure pointed to by \c obtained.  If \c obtained is NULL, the audio
 | 
			
		||||
 *  data passed to the callback function will be guaranteed to be in the
 | 
			
		||||
 *  requested format, and will be automatically converted to the hardware
 | 
			
		||||
 *  audio format if necessary.  This function returns -1 if it failed
 | 
			
		||||
 *  to open the audio device, or couldn't set up the audio thread.
 | 
			
		||||
 *
 | 
			
		||||
 *  When filling in the desired audio spec structure,
 | 
			
		||||
 *    - \c desired->freq should be the desired audio frequency in samples-per-
 | 
			
		||||
 *      second.
 | 
			
		||||
 *    - \c desired->format should be the desired audio format.
 | 
			
		||||
 *    - \c desired->samples is the desired size of the audio buffer, in
 | 
			
		||||
 *      samples.  This number should be a power of two, and may be adjusted by
 | 
			
		||||
 *      the audio driver to a value more suitable for the hardware.  Good values
 | 
			
		||||
 *      seem to range between 512 and 8096 inclusive, depending on the
 | 
			
		||||
 *      application and CPU speed.  Smaller values yield faster response time,
 | 
			
		||||
 *      but can lead to underflow if the application is doing heavy processing
 | 
			
		||||
 *      and cannot fill the audio buffer in time.  A stereo sample consists of
 | 
			
		||||
 *      both right and left channels in LR ordering.
 | 
			
		||||
 *      Note that the number of samples is directly related to time by the
 | 
			
		||||
 *      following formula:  \code ms = (samples*1000)/freq \endcode
 | 
			
		||||
 *    - \c desired->size is the size in bytes of the audio buffer, and is
 | 
			
		||||
 *      calculated by SDL_OpenAudio().
 | 
			
		||||
 *    - \c desired->silence is the value used to set the buffer to silence,
 | 
			
		||||
 *      and is calculated by SDL_OpenAudio().
 | 
			
		||||
 *    - \c desired->callback should be set to a function that will be called
 | 
			
		||||
 *      when the audio device is ready for more data.  It is passed a pointer
 | 
			
		||||
 *      to the audio buffer, and the length in bytes of the audio buffer.
 | 
			
		||||
 *      This function usually runs in a separate thread, and so you should
 | 
			
		||||
 *      protect data structures that it accesses by calling SDL_LockAudio()
 | 
			
		||||
 *      and SDL_UnlockAudio() in your code. Alternately, you may pass a NULL
 | 
			
		||||
 *      pointer here, and call SDL_QueueAudio() with some frequency, to queue
 | 
			
		||||
 *      more audio samples to be played.
 | 
			
		||||
 *    - \c desired->userdata is passed as the first parameter to your callback
 | 
			
		||||
 *      function. If you passed a NULL callback, this value is ignored.
 | 
			
		||||
 *
 | 
			
		||||
 *  The audio device starts out playing silence when it's opened, and should
 | 
			
		||||
 *  be enabled for playing by calling \c SDL_PauseAudio(0) when you are ready
 | 
			
		||||
 *  for your audio callback function to be called.  Since the audio driver
 | 
			
		||||
 *  may modify the requested size of the audio buffer, you should allocate
 | 
			
		||||
 *  any local mixing buffers after you open the audio device.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_OpenAudio(SDL_AudioSpec * desired,
 | 
			
		||||
                                          SDL_AudioSpec * obtained);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  SDL Audio Device IDs.
 | 
			
		||||
 *
 | 
			
		||||
 *  A successful call to SDL_OpenAudio() is always device id 1, and legacy
 | 
			
		||||
 *  SDL audio APIs assume you want this device ID. SDL_OpenAudioDevice() calls
 | 
			
		||||
 *  always returns devices >= 2 on success. The legacy calls are good both
 | 
			
		||||
 *  for backwards compatibility and when you don't care about multiple,
 | 
			
		||||
 *  specific, or capture devices.
 | 
			
		||||
 */
 | 
			
		||||
typedef Uint32 SDL_AudioDeviceID;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the number of available devices exposed by the current driver.
 | 
			
		||||
 *  Only valid after a successfully initializing the audio subsystem.
 | 
			
		||||
 *  Returns -1 if an explicit list of devices can't be determined; this is
 | 
			
		||||
 *  not an error. For example, if SDL is set up to talk to a remote audio
 | 
			
		||||
 *  server, it can't list every one available on the Internet, but it will
 | 
			
		||||
 *  still allow a specific host to be specified to SDL_OpenAudioDevice().
 | 
			
		||||
 *
 | 
			
		||||
 *  In many common cases, when this function returns a value <= 0, it can still
 | 
			
		||||
 *  successfully open the default device (NULL for first argument of
 | 
			
		||||
 *  SDL_OpenAudioDevice()).
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_GetNumAudioDevices(int iscapture);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the human-readable name of a specific audio device.
 | 
			
		||||
 *  Must be a value between 0 and (number of audio devices-1).
 | 
			
		||||
 *  Only valid after a successfully initializing the audio subsystem.
 | 
			
		||||
 *  The values returned by this function reflect the latest call to
 | 
			
		||||
 *  SDL_GetNumAudioDevices(); recall that function to redetect available
 | 
			
		||||
 *  hardware.
 | 
			
		||||
 *
 | 
			
		||||
 *  The string returned by this function is UTF-8 encoded, read-only, and
 | 
			
		||||
 *  managed internally. You are not to free it. If you need to keep the
 | 
			
		||||
 *  string for any length of time, you should make your own copy of it, as it
 | 
			
		||||
 *  will be invalid next time any of several other SDL functions is called.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC const char *SDLCALL SDL_GetAudioDeviceName(int index,
 | 
			
		||||
                                                           int iscapture);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Open a specific audio device. Passing in a device name of NULL requests
 | 
			
		||||
 *  the most reasonable default (and is equivalent to calling SDL_OpenAudio()).
 | 
			
		||||
 *
 | 
			
		||||
 *  The device name is a UTF-8 string reported by SDL_GetAudioDeviceName(), but
 | 
			
		||||
 *  some drivers allow arbitrary and driver-specific strings, such as a
 | 
			
		||||
 *  hostname/IP address for a remote audio server, or a filename in the
 | 
			
		||||
 *  diskaudio driver.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return 0 on error, a valid device ID that is >= 2 on success.
 | 
			
		||||
 *
 | 
			
		||||
 *  SDL_OpenAudio(), unlike this function, always acts on device ID 1.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_AudioDeviceID SDLCALL SDL_OpenAudioDevice(const char
 | 
			
		||||
                                                              *device,
 | 
			
		||||
                                                              int iscapture,
 | 
			
		||||
                                                              const
 | 
			
		||||
                                                              SDL_AudioSpec *
 | 
			
		||||
                                                              desired,
 | 
			
		||||
                                                              SDL_AudioSpec *
 | 
			
		||||
                                                              obtained,
 | 
			
		||||
                                                              int
 | 
			
		||||
                                                              allowed_changes);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name Audio state
 | 
			
		||||
 *
 | 
			
		||||
 *  Get the current audio state.
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_AUDIO_STOPPED = 0,
 | 
			
		||||
    SDL_AUDIO_PLAYING,
 | 
			
		||||
    SDL_AUDIO_PAUSED
 | 
			
		||||
} SDL_AudioStatus;
 | 
			
		||||
extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioStatus(void);
 | 
			
		||||
 | 
			
		||||
extern DECLSPEC SDL_AudioStatus SDLCALL
 | 
			
		||||
SDL_GetAudioDeviceStatus(SDL_AudioDeviceID dev);
 | 
			
		||||
/* @} *//* Audio State */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name Pause audio functions
 | 
			
		||||
 *
 | 
			
		||||
 *  These functions pause and unpause the audio callback processing.
 | 
			
		||||
 *  They should be called with a parameter of 0 after opening the audio
 | 
			
		||||
 *  device to start playing sound.  This is so you can safely initialize
 | 
			
		||||
 *  data for your callback function after opening the audio device.
 | 
			
		||||
 *  Silence will be written to the audio device during the pause.
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_PauseAudio(int pause_on);
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev,
 | 
			
		||||
                                                  int pause_on);
 | 
			
		||||
/* @} *//* Pause audio functions */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function loads a WAVE from the data source, automatically freeing
 | 
			
		||||
 *  that source if \c freesrc is non-zero.  For example, to load a WAVE file,
 | 
			
		||||
 *  you could do:
 | 
			
		||||
 *  \code
 | 
			
		||||
 *      SDL_LoadWAV_RW(SDL_RWFromFile("sample.wav", "rb"), 1, ...);
 | 
			
		||||
 *  \endcode
 | 
			
		||||
 *
 | 
			
		||||
 *  If this function succeeds, it returns the given SDL_AudioSpec,
 | 
			
		||||
 *  filled with the audio data format of the wave data, and sets
 | 
			
		||||
 *  \c *audio_buf to a malloc()'d buffer containing the audio data,
 | 
			
		||||
 *  and sets \c *audio_len to the length of that audio buffer, in bytes.
 | 
			
		||||
 *  You need to free the audio buffer with SDL_FreeWAV() when you are
 | 
			
		||||
 *  done with it.
 | 
			
		||||
 *
 | 
			
		||||
 *  This function returns NULL and sets the SDL error message if the
 | 
			
		||||
 *  wave file cannot be opened, uses an unknown data format, or is
 | 
			
		||||
 *  corrupt.  Currently raw and MS-ADPCM WAVE files are supported.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_AudioSpec *SDLCALL SDL_LoadWAV_RW(SDL_RWops * src,
 | 
			
		||||
                                                      int freesrc,
 | 
			
		||||
                                                      SDL_AudioSpec * spec,
 | 
			
		||||
                                                      Uint8 ** audio_buf,
 | 
			
		||||
                                                      Uint32 * audio_len);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Loads a WAV from a file.
 | 
			
		||||
 *  Compatibility convenience function.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_LoadWAV(file, spec, audio_buf, audio_len) \
 | 
			
		||||
    SDL_LoadWAV_RW(SDL_RWFromFile(file, "rb"),1, spec,audio_buf,audio_len)
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function frees data previously allocated with SDL_LoadWAV_RW()
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_FreeWAV(Uint8 * audio_buf);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function takes a source format and rate and a destination format
 | 
			
		||||
 *  and rate, and initializes the \c cvt structure with information needed
 | 
			
		||||
 *  by SDL_ConvertAudio() to convert a buffer of audio data from one format
 | 
			
		||||
 *  to the other.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return -1 if the format conversion is not supported, 0 if there's
 | 
			
		||||
 *  no conversion needed, or 1 if the audio filter is set up.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_BuildAudioCVT(SDL_AudioCVT * cvt,
 | 
			
		||||
                                              SDL_AudioFormat src_format,
 | 
			
		||||
                                              Uint8 src_channels,
 | 
			
		||||
                                              int src_rate,
 | 
			
		||||
                                              SDL_AudioFormat dst_format,
 | 
			
		||||
                                              Uint8 dst_channels,
 | 
			
		||||
                                              int dst_rate);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Once you have initialized the \c cvt structure using SDL_BuildAudioCVT(),
 | 
			
		||||
 *  created an audio buffer \c cvt->buf, and filled it with \c cvt->len bytes of
 | 
			
		||||
 *  audio data in the source format, this function will convert it in-place
 | 
			
		||||
 *  to the desired format.
 | 
			
		||||
 *
 | 
			
		||||
 *  The data conversion may expand the size of the audio data, so the buffer
 | 
			
		||||
 *  \c cvt->buf should be allocated after the \c cvt structure is initialized by
 | 
			
		||||
 *  SDL_BuildAudioCVT(), and should be \c cvt->len*cvt->len_mult bytes long.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_ConvertAudio(SDL_AudioCVT * cvt);
 | 
			
		||||
 | 
			
		||||
#define SDL_MIX_MAXVOLUME 128
 | 
			
		||||
/**
 | 
			
		||||
 *  This takes two audio buffers of the playing audio format and mixes
 | 
			
		||||
 *  them, performing addition, volume adjustment, and overflow clipping.
 | 
			
		||||
 *  The volume ranges from 0 - 128, and should be set to ::SDL_MIX_MAXVOLUME
 | 
			
		||||
 *  for full audio volume.  Note this does not change hardware volume.
 | 
			
		||||
 *  This is provided for convenience -- you can mix your own audio data.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_MixAudio(Uint8 * dst, const Uint8 * src,
 | 
			
		||||
                                          Uint32 len, int volume);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This works like SDL_MixAudio(), but you specify the audio format instead of
 | 
			
		||||
 *  using the format of audio device 1. Thus it can be used when no audio
 | 
			
		||||
 *  device is open at all.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_MixAudioFormat(Uint8 * dst,
 | 
			
		||||
                                                const Uint8 * src,
 | 
			
		||||
                                                SDL_AudioFormat format,
 | 
			
		||||
                                                Uint32 len, int volume);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Queue more audio on non-callback devices.
 | 
			
		||||
 *
 | 
			
		||||
 *  SDL offers two ways to feed audio to the device: you can either supply a
 | 
			
		||||
 *  callback that SDL triggers with some frequency to obtain more audio
 | 
			
		||||
 *  (pull method), or you can supply no callback, and then SDL will expect
 | 
			
		||||
 *  you to supply data at regular intervals (push method) with this function.
 | 
			
		||||
 *
 | 
			
		||||
 *  There are no limits on the amount of data you can queue, short of
 | 
			
		||||
 *  exhaustion of address space. Queued data will drain to the device as
 | 
			
		||||
 *  necessary without further intervention from you. If the device needs
 | 
			
		||||
 *  audio but there is not enough queued, it will play silence to make up
 | 
			
		||||
 *  the difference. This means you will have skips in your audio playback
 | 
			
		||||
 *  if you aren't routinely queueing sufficient data.
 | 
			
		||||
 *
 | 
			
		||||
 *  This function copies the supplied data, so you are safe to free it when
 | 
			
		||||
 *  the function returns. This function is thread-safe, but queueing to the
 | 
			
		||||
 *  same device from two threads at once does not promise which buffer will
 | 
			
		||||
 *  be queued first.
 | 
			
		||||
 *
 | 
			
		||||
 *  You may not queue audio on a device that is using an application-supplied
 | 
			
		||||
 *  callback; doing so returns an error. You have to use the audio callback
 | 
			
		||||
 *  or queue audio with this function, but not both.
 | 
			
		||||
 *
 | 
			
		||||
 *  You should not call SDL_LockAudio() on the device before queueing; SDL
 | 
			
		||||
 *  handles locking internally for this function.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param dev The device ID to which we will queue audio.
 | 
			
		||||
 *  \param data The data to queue to the device for later playback.
 | 
			
		||||
 *  \param len The number of bytes (not samples!) to which (data) points.
 | 
			
		||||
 *  \return zero on success, -1 on error.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_GetQueuedAudioSize
 | 
			
		||||
 *  \sa SDL_ClearQueuedAudio
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_QueueAudio(SDL_AudioDeviceID dev, const void *data, Uint32 len);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the number of bytes of still-queued audio.
 | 
			
		||||
 *
 | 
			
		||||
 *  This is the number of bytes that have been queued for playback with
 | 
			
		||||
 *  SDL_QueueAudio(), but have not yet been sent to the hardware.
 | 
			
		||||
 *
 | 
			
		||||
 *  Once we've sent it to the hardware, this function can not decide the exact
 | 
			
		||||
 *  byte boundary of what has been played. It's possible that we just gave the
 | 
			
		||||
 *  hardware several kilobytes right before you called this function, but it
 | 
			
		||||
 *  hasn't played any of it yet, or maybe half of it, etc.
 | 
			
		||||
 *
 | 
			
		||||
 *  You may not queue audio on a device that is using an application-supplied
 | 
			
		||||
 *  callback; calling this function on such a device always returns 0.
 | 
			
		||||
 *  You have to use the audio callback or queue audio with SDL_QueueAudio(),
 | 
			
		||||
 *  but not both.
 | 
			
		||||
 *
 | 
			
		||||
 *  You should not call SDL_LockAudio() on the device before querying; SDL
 | 
			
		||||
 *  handles locking internally for this function.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param dev The device ID of which we will query queued audio size.
 | 
			
		||||
 *  \return Number of bytes (not samples!) of queued audio.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_QueueAudio
 | 
			
		||||
 *  \sa SDL_ClearQueuedAudio
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC Uint32 SDLCALL SDL_GetQueuedAudioSize(SDL_AudioDeviceID dev);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Drop any queued audio data waiting to be sent to the hardware.
 | 
			
		||||
 *
 | 
			
		||||
 *  Immediately after this call, SDL_GetQueuedAudioSize() will return 0 and
 | 
			
		||||
 *  the hardware will start playing silence if more audio isn't queued.
 | 
			
		||||
 *
 | 
			
		||||
 *  This will not prevent playback of queued audio that's already been sent
 | 
			
		||||
 *  to the hardware, as we can not undo that, so expect there to be some
 | 
			
		||||
 *  fraction of a second of audio that might still be heard. This can be
 | 
			
		||||
 *  useful if you want to, say, drop any pending music during a level change
 | 
			
		||||
 *  in your game.
 | 
			
		||||
 *
 | 
			
		||||
 *  You may not queue audio on a device that is using an application-supplied
 | 
			
		||||
 *  callback; calling this function on such a device is always a no-op.
 | 
			
		||||
 *  You have to use the audio callback or queue audio with SDL_QueueAudio(),
 | 
			
		||||
 *  but not both.
 | 
			
		||||
 *
 | 
			
		||||
 *  You should not call SDL_LockAudio() on the device before clearing the
 | 
			
		||||
 *  queue; SDL handles locking internally for this function.
 | 
			
		||||
 *
 | 
			
		||||
 *  This function always succeeds and thus returns void.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param dev The device ID of which to clear the audio queue.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_QueueAudio
 | 
			
		||||
 *  \sa SDL_GetQueuedAudioSize
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_ClearQueuedAudio(SDL_AudioDeviceID dev);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name Audio lock functions
 | 
			
		||||
 *
 | 
			
		||||
 *  The lock manipulated by these functions protects the callback function.
 | 
			
		||||
 *  During a SDL_LockAudio()/SDL_UnlockAudio() pair, you can be guaranteed that
 | 
			
		||||
 *  the callback function is not running.  Do not call these from the callback
 | 
			
		||||
 *  function or you will cause deadlock.
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_LockAudio(void);
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_LockAudioDevice(SDL_AudioDeviceID dev);
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_UnlockAudio(void);
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_UnlockAudioDevice(SDL_AudioDeviceID dev);
 | 
			
		||||
/* @} *//* Audio lock functions */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function shuts down audio processing and closes the audio device.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_CloseAudio(void);
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_CloseAudioDevice(SDL_AudioDeviceID dev);
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_audio_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
							
								
								
									
										97
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_bits.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_bits.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,97 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_bits.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Functions for fiddling with bits and bitmasks.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_bits_h
 | 
			
		||||
#define _SDL_bits_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_bits.h
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the index of the most significant bit. Result is undefined when called
 | 
			
		||||
 *  with 0. This operation can also be stated as "count leading zeroes" and
 | 
			
		||||
 *  "log base 2".
 | 
			
		||||
 *
 | 
			
		||||
 *  \return Index of the most significant bit, or -1 if the value is 0.
 | 
			
		||||
 */
 | 
			
		||||
SDL_FORCE_INLINE int
 | 
			
		||||
SDL_MostSignificantBitIndex32(Uint32 x)
 | 
			
		||||
{
 | 
			
		||||
#if defined(__GNUC__) && __GNUC__ >= 4
 | 
			
		||||
    /* Count Leading Zeroes builtin in GCC.
 | 
			
		||||
     * http://gcc.gnu.org/onlinedocs/gcc-4.3.4/gcc/Other-Builtins.html
 | 
			
		||||
     */
 | 
			
		||||
    if (x == 0) {
 | 
			
		||||
        return -1;
 | 
			
		||||
    }
 | 
			
		||||
    return 31 - __builtin_clz(x);
 | 
			
		||||
#else
 | 
			
		||||
    /* Based off of Bit Twiddling Hacks by Sean Eron Anderson
 | 
			
		||||
     * <seander@cs.stanford.edu>, released in the public domain.
 | 
			
		||||
     * http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog
 | 
			
		||||
     */
 | 
			
		||||
    const Uint32 b[] = {0x2, 0xC, 0xF0, 0xFF00, 0xFFFF0000};
 | 
			
		||||
    const int    S[] = {1, 2, 4, 8, 16};
 | 
			
		||||
 | 
			
		||||
    int msbIndex = 0;
 | 
			
		||||
    int i;
 | 
			
		||||
 | 
			
		||||
    if (x == 0) {
 | 
			
		||||
        return -1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    for (i = 4; i >= 0; i--)
 | 
			
		||||
    {
 | 
			
		||||
        if (x & b[i])
 | 
			
		||||
        {
 | 
			
		||||
            x >>= S[i];
 | 
			
		||||
            msbIndex |= S[i];
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return msbIndex;
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_bits_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
@ -0,0 +1,63 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_blendmode.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Header file declaring the SDL_BlendMode enumeration
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_blendmode_h
 | 
			
		||||
#define _SDL_blendmode_h
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief The blend mode used in SDL_RenderCopy() and drawing operations.
 | 
			
		||||
 */
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_BLENDMODE_NONE = 0x00000000,     /**< no blending
 | 
			
		||||
                                              dstRGBA = srcRGBA */
 | 
			
		||||
    SDL_BLENDMODE_BLEND = 0x00000001,    /**< alpha blending
 | 
			
		||||
                                              dstRGB = (srcRGB * srcA) + (dstRGB * (1-srcA))
 | 
			
		||||
                                              dstA = srcA + (dstA * (1-srcA)) */
 | 
			
		||||
    SDL_BLENDMODE_ADD = 0x00000002,      /**< additive blending
 | 
			
		||||
                                              dstRGB = (srcRGB * srcA) + dstRGB
 | 
			
		||||
                                              dstA = dstA */
 | 
			
		||||
    SDL_BLENDMODE_MOD = 0x00000004       /**< color modulate
 | 
			
		||||
                                              dstRGB = srcRGB * dstRGB
 | 
			
		||||
                                              dstA = dstA */
 | 
			
		||||
} SDL_BlendMode;
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_blendmode_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
@ -0,0 +1,71 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \file SDL_clipboard.h
 | 
			
		||||
 *
 | 
			
		||||
 * Include file for SDL clipboard handling
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_clipboard_h
 | 
			
		||||
#define _SDL_clipboard_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Function prototypes */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Put UTF-8 text into the clipboard
 | 
			
		||||
 *
 | 
			
		||||
 * \sa SDL_GetClipboardText()
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_SetClipboardText(const char *text);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Get UTF-8 text from the clipboard, which must be freed with SDL_free()
 | 
			
		||||
 *
 | 
			
		||||
 * \sa SDL_SetClipboardText()
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC char * SDLCALL SDL_GetClipboardText(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Returns a flag indicating whether the clipboard exists and contains a text string that is non-empty
 | 
			
		||||
 *
 | 
			
		||||
 * \sa SDL_GetClipboardText()
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasClipboardText(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_clipboard_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
							
								
								
									
										55
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_config.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_config.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,55 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_config_h
 | 
			
		||||
#define _SDL_config_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_platform.h"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_config.h
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* Add any platform that doesn't build using the configure system. */
 | 
			
		||||
#ifdef USING_PREMAKE_CONFIG_H
 | 
			
		||||
#include "SDL_config_premake.h"
 | 
			
		||||
#elif defined(__WIN32__)
 | 
			
		||||
#include "SDL_config_windows.h"
 | 
			
		||||
#elif defined(__WINRT__)
 | 
			
		||||
#include "SDL_config_winrt.h"
 | 
			
		||||
#elif defined(__MACOSX__)
 | 
			
		||||
#include "SDL_config_macosx.h"
 | 
			
		||||
#elif defined(__IPHONEOS__)
 | 
			
		||||
#include "SDL_config_iphoneos.h"
 | 
			
		||||
#elif defined(__ANDROID__)
 | 
			
		||||
#include "SDL_config_android.h"
 | 
			
		||||
#elif defined(__PSP__)
 | 
			
		||||
#include "SDL_config_psp.h"
 | 
			
		||||
#else
 | 
			
		||||
/* This is a minimal configuration just to get SDL running on new platforms */
 | 
			
		||||
#include "SDL_config_minimal.h"
 | 
			
		||||
#endif /* platform config */
 | 
			
		||||
 | 
			
		||||
#ifdef USING_GENERATED_CONFIG_H
 | 
			
		||||
#error Wrong SDL_config.h, check your include path?
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_config_h */
 | 
			
		||||
							
								
								
									
										419
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_config.h.cmake
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										419
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_config.h.cmake
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,419 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_config_h
 | 
			
		||||
#define _SDL_config_h
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_config.h.in
 | 
			
		||||
 *
 | 
			
		||||
 *  This is a set of defines to configure the SDL features
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* General platform specific identifiers */
 | 
			
		||||
#include "SDL_platform.h"
 | 
			
		||||
 | 
			
		||||
/* C language features */
 | 
			
		||||
#cmakedefine const @HAVE_CONST@
 | 
			
		||||
#cmakedefine inline @HAVE_INLINE@
 | 
			
		||||
#cmakedefine volatile @HAVE_VOLATILE@
 | 
			
		||||
 | 
			
		||||
/* C datatypes */
 | 
			
		||||
/* Define SIZEOF_VOIDP for 64/32 architectures */
 | 
			
		||||
#ifdef __LP64__
 | 
			
		||||
#define SIZEOF_VOIDP 8
 | 
			
		||||
#else
 | 
			
		||||
#define SIZEOF_VOIDP 4
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#cmakedefine HAVE_GCC_ATOMICS @HAVE_GCC_ATOMICS@
 | 
			
		||||
#cmakedefine HAVE_GCC_SYNC_LOCK_TEST_AND_SET @HAVE_GCC_SYNC_LOCK_TEST_AND_SET@
 | 
			
		||||
 | 
			
		||||
#cmakedefine HAVE_D3D_H @HAVE_D3D_H@
 | 
			
		||||
#cmakedefine HAVE_D3D11_H @HAVE_D3D11_H@
 | 
			
		||||
#cmakedefine HAVE_DDRAW_H @HAVE_DDRAW_H@
 | 
			
		||||
#cmakedefine HAVE_DSOUND_H @HAVE_DSOUND_H@
 | 
			
		||||
#cmakedefine HAVE_DINPUT_H @HAVE_DINPUT_H@
 | 
			
		||||
#cmakedefine HAVE_XAUDIO2_H @HAVE_XAUDIO2_H@
 | 
			
		||||
#cmakedefine HAVE_XINPUT_H @HAVE_XINPUT_H@
 | 
			
		||||
#cmakedefine HAVE_DXGI_H @HAVE_DXGI_H@
 | 
			
		||||
 | 
			
		||||
/* Comment this if you want to build without any C library requirements */
 | 
			
		||||
#cmakedefine HAVE_LIBC 1
 | 
			
		||||
#if HAVE_LIBC
 | 
			
		||||
 | 
			
		||||
/* Useful headers */
 | 
			
		||||
#cmakedefine HAVE_ALLOCA_H 1
 | 
			
		||||
#cmakedefine HAVE_SYS_TYPES_H 1
 | 
			
		||||
#cmakedefine HAVE_STDIO_H 1
 | 
			
		||||
#cmakedefine STDC_HEADERS 1
 | 
			
		||||
#cmakedefine HAVE_STDLIB_H 1
 | 
			
		||||
#cmakedefine HAVE_STDARG_H 1
 | 
			
		||||
#cmakedefine HAVE_MALLOC_H 1
 | 
			
		||||
#cmakedefine HAVE_MEMORY_H 1
 | 
			
		||||
#cmakedefine HAVE_STRING_H 1
 | 
			
		||||
#cmakedefine HAVE_STRINGS_H 1
 | 
			
		||||
#cmakedefine HAVE_INTTYPES_H 1
 | 
			
		||||
#cmakedefine HAVE_STDINT_H 1
 | 
			
		||||
#cmakedefine HAVE_CTYPE_H 1
 | 
			
		||||
#cmakedefine HAVE_MATH_H 1
 | 
			
		||||
#cmakedefine HAVE_ICONV_H 1
 | 
			
		||||
#cmakedefine HAVE_SIGNAL_H 1
 | 
			
		||||
#cmakedefine HAVE_ALTIVEC_H 1
 | 
			
		||||
#cmakedefine HAVE_PTHREAD_NP_H 1
 | 
			
		||||
#cmakedefine HAVE_LIBUDEV_H 1
 | 
			
		||||
#cmakedefine HAVE_DBUS_DBUS_H 1
 | 
			
		||||
 | 
			
		||||
/* C library functions */
 | 
			
		||||
#cmakedefine HAVE_MALLOC 1
 | 
			
		||||
#cmakedefine HAVE_CALLOC 1
 | 
			
		||||
#cmakedefine HAVE_REALLOC 1
 | 
			
		||||
#cmakedefine HAVE_FREE 1
 | 
			
		||||
#cmakedefine HAVE_ALLOCA 1
 | 
			
		||||
#ifndef __WIN32__ /* Don't use C runtime versions of these on Windows */
 | 
			
		||||
#cmakedefine HAVE_GETENV 1
 | 
			
		||||
#cmakedefine HAVE_SETENV 1
 | 
			
		||||
#cmakedefine HAVE_PUTENV 1
 | 
			
		||||
#cmakedefine HAVE_UNSETENV 1
 | 
			
		||||
#endif
 | 
			
		||||
#cmakedefine HAVE_QSORT 1
 | 
			
		||||
#cmakedefine HAVE_ABS 1
 | 
			
		||||
#cmakedefine HAVE_BCOPY 1
 | 
			
		||||
#cmakedefine HAVE_MEMSET 1
 | 
			
		||||
#cmakedefine HAVE_MEMCPY 1
 | 
			
		||||
#cmakedefine HAVE_MEMMOVE 1
 | 
			
		||||
#cmakedefine HAVE_MEMCMP 1
 | 
			
		||||
#cmakedefine HAVE_STRLEN 1
 | 
			
		||||
#cmakedefine HAVE_STRLCPY 1
 | 
			
		||||
#cmakedefine HAVE_STRLCAT 1
 | 
			
		||||
#cmakedefine HAVE_STRDUP 1
 | 
			
		||||
#cmakedefine HAVE__STRREV 1
 | 
			
		||||
#cmakedefine HAVE__STRUPR 1
 | 
			
		||||
#cmakedefine HAVE__STRLWR 1
 | 
			
		||||
#cmakedefine HAVE_INDEX 1
 | 
			
		||||
#cmakedefine HAVE_RINDEX 1
 | 
			
		||||
#cmakedefine HAVE_STRCHR 1
 | 
			
		||||
#cmakedefine HAVE_STRRCHR 1
 | 
			
		||||
#cmakedefine HAVE_STRSTR 1
 | 
			
		||||
#cmakedefine HAVE_ITOA 1
 | 
			
		||||
#cmakedefine HAVE__LTOA 1
 | 
			
		||||
#cmakedefine HAVE__UITOA 1
 | 
			
		||||
#cmakedefine HAVE__ULTOA 1
 | 
			
		||||
#cmakedefine HAVE_STRTOL 1
 | 
			
		||||
#cmakedefine HAVE_STRTOUL 1
 | 
			
		||||
#cmakedefine HAVE__I64TOA 1
 | 
			
		||||
#cmakedefine HAVE__UI64TOA 1
 | 
			
		||||
#cmakedefine HAVE_STRTOLL 1
 | 
			
		||||
#cmakedefine HAVE_STRTOULL 1
 | 
			
		||||
#cmakedefine HAVE_STRTOD 1
 | 
			
		||||
#cmakedefine HAVE_ATOI 1
 | 
			
		||||
#cmakedefine HAVE_ATOF 1
 | 
			
		||||
#cmakedefine HAVE_STRCMP 1
 | 
			
		||||
#cmakedefine HAVE_STRNCMP 1
 | 
			
		||||
#cmakedefine HAVE__STRICMP 1
 | 
			
		||||
#cmakedefine HAVE_STRCASECMP 1
 | 
			
		||||
#cmakedefine HAVE__STRNICMP 1
 | 
			
		||||
#cmakedefine HAVE_STRNCASECMP 1
 | 
			
		||||
#cmakedefine HAVE_VSSCANF 1
 | 
			
		||||
#cmakedefine HAVE_VSNPRINTF 1
 | 
			
		||||
#cmakedefine HAVE_M_PI 1
 | 
			
		||||
#cmakedefine HAVE_ATAN 1
 | 
			
		||||
#cmakedefine HAVE_ATAN2 1
 | 
			
		||||
#cmakedefine HAVE_ACOS 1
 | 
			
		||||
#cmakedefine HAVE_ASIN 1
 | 
			
		||||
#cmakedefine HAVE_CEIL 1
 | 
			
		||||
#cmakedefine HAVE_COPYSIGN 1
 | 
			
		||||
#cmakedefine HAVE_COS 1
 | 
			
		||||
#cmakedefine HAVE_COSF 1
 | 
			
		||||
#cmakedefine HAVE_FABS 1
 | 
			
		||||
#cmakedefine HAVE_FLOOR 1
 | 
			
		||||
#cmakedefine HAVE_LOG 1
 | 
			
		||||
#cmakedefine HAVE_POW 1
 | 
			
		||||
#cmakedefine HAVE_SCALBN 1
 | 
			
		||||
#cmakedefine HAVE_SIN 1
 | 
			
		||||
#cmakedefine HAVE_SINF 1
 | 
			
		||||
#cmakedefine HAVE_SQRT 1
 | 
			
		||||
#cmakedefine HAVE_SQRTF 1
 | 
			
		||||
#cmakedefine HAVE_TAN 1
 | 
			
		||||
#cmakedefine HAVE_TANF 1
 | 
			
		||||
#cmakedefine HAVE_FSEEKO 1
 | 
			
		||||
#cmakedefine HAVE_FSEEKO64 1
 | 
			
		||||
#cmakedefine HAVE_SIGACTION 1
 | 
			
		||||
#cmakedefine HAVE_SA_SIGACTION 1
 | 
			
		||||
#cmakedefine HAVE_SETJMP 1
 | 
			
		||||
#cmakedefine HAVE_NANOSLEEP 1
 | 
			
		||||
#cmakedefine HAVE_SYSCONF 1
 | 
			
		||||
#cmakedefine HAVE_SYSCTLBYNAME 1
 | 
			
		||||
#cmakedefine HAVE_CLOCK_GETTIME 1
 | 
			
		||||
#cmakedefine HAVE_GETPAGESIZE 1
 | 
			
		||||
#cmakedefine HAVE_MPROTECT 1
 | 
			
		||||
#cmakedefine HAVE_ICONV 1
 | 
			
		||||
#cmakedefine HAVE_PTHREAD_SETNAME_NP 1
 | 
			
		||||
#cmakedefine HAVE_PTHREAD_SET_NAME_NP 1
 | 
			
		||||
#cmakedefine HAVE_SEM_TIMEDWAIT 1
 | 
			
		||||
#elif __WIN32__
 | 
			
		||||
#cmakedefine HAVE_STDARG_H 1
 | 
			
		||||
#cmakedefine HAVE_STDDEF_H 1
 | 
			
		||||
#else
 | 
			
		||||
/* We may need some replacement for stdarg.h here */
 | 
			
		||||
#include <stdarg.h>
 | 
			
		||||
#endif /* HAVE_LIBC */
 | 
			
		||||
 | 
			
		||||
/* SDL internal assertion support */
 | 
			
		||||
#cmakedefine SDL_DEFAULT_ASSERT_LEVEL @SDL_DEFAULT_ASSERT_LEVEL@
 | 
			
		||||
 | 
			
		||||
/* Allow disabling of core subsystems */
 | 
			
		||||
#cmakedefine SDL_ATOMIC_DISABLED @SDL_ATOMIC_DISABLED@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DISABLED @SDL_AUDIO_DISABLED@
 | 
			
		||||
#cmakedefine SDL_CPUINFO_DISABLED @SDL_CPUINFO_DISABLED@
 | 
			
		||||
#cmakedefine SDL_EVENTS_DISABLED @SDL_EVENTS_DISABLED@
 | 
			
		||||
#cmakedefine SDL_FILE_DISABLED @SDL_FILE_DISABLED@
 | 
			
		||||
#cmakedefine SDL_JOYSTICK_DISABLED @SDL_JOYSTICK_DISABLED@
 | 
			
		||||
#cmakedefine SDL_HAPTIC_DISABLED @SDL_HAPTIC_DISABLED@
 | 
			
		||||
#cmakedefine SDL_LOADSO_DISABLED @SDL_LOADSO_DISABLED@
 | 
			
		||||
#cmakedefine SDL_RENDER_DISABLED @SDL_RENDER_DISABLED@
 | 
			
		||||
#cmakedefine SDL_THREADS_DISABLED @SDL_THREADS_DISABLED@
 | 
			
		||||
#cmakedefine SDL_TIMERS_DISABLED @SDL_TIMERS_DISABLED@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DISABLED @SDL_VIDEO_DISABLED@
 | 
			
		||||
#cmakedefine SDL_POWER_DISABLED @SDL_POWER_DISABLED@
 | 
			
		||||
#cmakedefine SDL_FILESYSTEM_DISABLED @SDL_FILESYSTEM_DISABLED@
 | 
			
		||||
 | 
			
		||||
/* Enable various audio drivers */
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_ANDROID @SDL_AUDIO_DRIVER_ANDROID@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_ALSA @SDL_AUDIO_DRIVER_ALSA@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_ALSA_DYNAMIC @SDL_AUDIO_DRIVER_ALSA_DYNAMIC@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_ARTS @SDL_AUDIO_DRIVER_ARTS@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_ARTS_DYNAMIC @SDL_AUDIO_DRIVER_ARTS_DYNAMIC@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_PULSEAUDIO @SDL_AUDIO_DRIVER_PULSEAUDIO@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC @SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_HAIKU @SDL_AUDIO_DRIVER_HAIKU@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_BSD @SDL_AUDIO_DRIVER_BSD@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_COREAUDIO @SDL_AUDIO_DRIVER_COREAUDIO@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_DISK @SDL_AUDIO_DRIVER_DISK@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_DUMMY @SDL_AUDIO_DRIVER_DUMMY@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_XAUDIO2 @SDL_AUDIO_DRIVER_XAUDIO2@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_DSOUND @SDL_AUDIO_DRIVER_DSOUND@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_ESD @SDL_AUDIO_DRIVER_ESD@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_ESD_DYNAMIC @SDL_AUDIO_DRIVER_ESD_DYNAMIC@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_NAS @SDL_AUDIO_DRIVER_NAS@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_NAS_DYNAMIC @SDL_AUDIO_DRIVER_NAS_DYNAMIC@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_SNDIO @SDL_AUDIO_DRIVER_SNDIO@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_SNDIO_DYNAMIC @SDL_AUDIO_DRIVER_SNDIO_DYNAMIC@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_OSS @SDL_AUDIO_DRIVER_OSS@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_OSS_SOUNDCARD_H @SDL_AUDIO_DRIVER_OSS_SOUNDCARD_H@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_PAUDIO @SDL_AUDIO_DRIVER_PAUDIO@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_QSA @SDL_AUDIO_DRIVER_QSA@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_SUNAUDIO @SDL_AUDIO_DRIVER_SUNAUDIO@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_WINMM @SDL_AUDIO_DRIVER_WINMM@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_FUSIONSOUND @SDL_AUDIO_DRIVER_FUSIONSOUND@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_FUSIONSOUND_DYNAMIC @SDL_AUDIO_DRIVER_FUSIONSOUND_DYNAMIC@
 | 
			
		||||
#cmakedefine SDL_AUDIO_DRIVER_EMSCRIPTEN @SDL_AUDIO_DRIVER_EMSCRIPTEN@
 | 
			
		||||
 | 
			
		||||
/* Enable various input drivers */
 | 
			
		||||
#cmakedefine SDL_INPUT_LINUXEV @SDL_INPUT_LINUXEV@
 | 
			
		||||
#cmakedefine SDL_INPUT_LINUXKD @SDL_INPUT_LINUXKD@
 | 
			
		||||
#cmakedefine SDL_INPUT_TSLIB @SDL_INPUT_TSLIB@
 | 
			
		||||
#cmakedefine SDL_JOYSTICK_ANDROID @SDL_JOYSTICK_ANDROID@
 | 
			
		||||
#cmakedefine SDL_JOYSTICK_HAIKU @SDL_JOYSTICK_HAIKU@
 | 
			
		||||
#cmakedefine SDL_JOYSTICK_DINPUT @SDL_JOYSTICK_DINPUT@
 | 
			
		||||
#cmakedefine SDL_JOYSTICK_XINPUT @SDL_JOYSTICK_XINPUT@
 | 
			
		||||
#cmakedefine SDL_JOYSTICK_DUMMY @SDL_JOYSTICK_DUMMY@
 | 
			
		||||
#cmakedefine SDL_JOYSTICK_IOKIT @SDL_JOYSTICK_IOKIT@
 | 
			
		||||
#cmakedefine SDL_JOYSTICK_MFI @SDL_JOYSTICK_MFI@
 | 
			
		||||
#cmakedefine SDL_JOYSTICK_LINUX @SDL_JOYSTICK_LINUX@
 | 
			
		||||
#cmakedefine SDL_JOYSTICK_WINMM @SDL_JOYSTICK_WINMM@
 | 
			
		||||
#cmakedefine SDL_JOYSTICK_USBHID @SDL_JOYSTICK_USBHID@
 | 
			
		||||
#cmakedefine SDL_JOYSTICK_USBHID_MACHINE_JOYSTICK_H @SDL_JOYSTICK_USBHID_MACHINE_JOYSTICK_H@
 | 
			
		||||
#cmakedefine SDL_JOYSTICK_EMSCRIPTEN @SDL_JOYSTICK_EMSCRIPTEN@
 | 
			
		||||
#cmakedefine SDL_HAPTIC_DUMMY @SDL_HAPTIC_DUMMY@
 | 
			
		||||
#cmakedefine SDL_HAPTIC_LINUX @SDL_HAPTIC_LINUX@
 | 
			
		||||
#cmakedefine SDL_HAPTIC_IOKIT @SDL_HAPTIC_IOKIT@
 | 
			
		||||
#cmakedefine SDL_HAPTIC_DINPUT @SDL_HAPTIC_DINPUT@
 | 
			
		||||
#cmakedefine SDL_HAPTIC_XINPUT @SDL_HAPTIC_XINPUT@
 | 
			
		||||
 | 
			
		||||
/* Enable various shared object loading systems */
 | 
			
		||||
#cmakedefine SDL_LOADSO_HAIKU @SDL_LOADSO_HAIKU@
 | 
			
		||||
#cmakedefine SDL_LOADSO_DLOPEN @SDL_LOADSO_DLOPEN@
 | 
			
		||||
#cmakedefine SDL_LOADSO_DUMMY @SDL_LOADSO_DUMMY@
 | 
			
		||||
#cmakedefine SDL_LOADSO_LDG @SDL_LOADSO_LDG@
 | 
			
		||||
#cmakedefine SDL_LOADSO_WINDOWS @SDL_LOADSO_WINDOWS@
 | 
			
		||||
 | 
			
		||||
/* Enable various threading systems */
 | 
			
		||||
#cmakedefine SDL_THREAD_PTHREAD @SDL_THREAD_PTHREAD@
 | 
			
		||||
#cmakedefine SDL_THREAD_PTHREAD_RECURSIVE_MUTEX @SDL_THREAD_PTHREAD_RECURSIVE_MUTEX@
 | 
			
		||||
#cmakedefine SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP @SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP@
 | 
			
		||||
#cmakedefine SDL_THREAD_WINDOWS @SDL_THREAD_WINDOWS@
 | 
			
		||||
 | 
			
		||||
/* Enable various timer systems */
 | 
			
		||||
#cmakedefine SDL_TIMER_HAIKU @SDL_TIMER_HAIKU@
 | 
			
		||||
#cmakedefine SDL_TIMER_DUMMY @SDL_TIMER_DUMMY@
 | 
			
		||||
#cmakedefine SDL_TIMER_UNIX @SDL_TIMER_UNIX@
 | 
			
		||||
#cmakedefine SDL_TIMER_WINDOWS @SDL_TIMER_WINDOWS@
 | 
			
		||||
#cmakedefine SDL_TIMER_WINCE @SDL_TIMER_WINCE@
 | 
			
		||||
 | 
			
		||||
/* Enable various video drivers */
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_ANDROID @SDL_VIDEO_DRIVER_ANDROID@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_HAIKU @SDL_VIDEO_DRIVER_HAIKU@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_COCOA @SDL_VIDEO_DRIVER_COCOA@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_DIRECTFB @SDL_VIDEO_DRIVER_DIRECTFB@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC @SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_DUMMY @SDL_VIDEO_DRIVER_DUMMY@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_WINDOWS @SDL_VIDEO_DRIVER_WINDOWS@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_WAYLAND @SDL_VIDEO_DRIVER_WAYLAND@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_RPI @SDL_VIDEO_DRIVER_RPI@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_VIVANTE @SDL_VIDEO_DRIVER_VIVANTE@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_VIVANTE_VDK @SDL_VIDEO_DRIVER_VIVANTE_VDK@
 | 
			
		||||
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH @SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC @SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL @SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR @SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON @SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON@
 | 
			
		||||
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_MIR @SDL_VIDEO_DRIVER_MIR@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_MIR_DYNAMIC @SDL_VIDEO_DRIVER_MIR_DYNAMIC@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_MIR_DYNAMIC_XKBCOMMON @SDL_VIDEO_DRIVER_MIR_DYNAMIC_XKBCOMMON@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_EMSCRIPTEN @SDL_VIDEO_DRIVER_EMSCRIPTEN@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_X11 @SDL_VIDEO_DRIVER_X11@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC @SDL_VIDEO_DRIVER_X11_DYNAMIC@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT @SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR @SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA @SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 @SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR @SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS @SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE @SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_X11_XCURSOR @SDL_VIDEO_DRIVER_X11_XCURSOR@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_X11_XDBE @SDL_VIDEO_DRIVER_X11_XDBE@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_X11_XINERAMA @SDL_VIDEO_DRIVER_X11_XINERAMA@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_X11_XINPUT2 @SDL_VIDEO_DRIVER_X11_XINPUT2@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH @SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_X11_XRANDR @SDL_VIDEO_DRIVER_X11_XRANDR@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_X11_XSCRNSAVER @SDL_VIDEO_DRIVER_X11_XSCRNSAVER@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_X11_XSHAPE @SDL_VIDEO_DRIVER_X11_XSHAPE@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_X11_XVIDMODE @SDL_VIDEO_DRIVER_X11_XVIDMODE@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS @SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY @SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY@
 | 
			
		||||
#cmakedefine SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM @SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM@
 | 
			
		||||
 | 
			
		||||
#cmakedefine SDL_VIDEO_RENDER_D3D @SDL_VIDEO_RENDER_D3D@
 | 
			
		||||
#cmakedefine SDL_VIDEO_RENDER_D3D11 @SDL_VIDEO_RENDER_D3D11@
 | 
			
		||||
#cmakedefine SDL_VIDEO_RENDER_OGL @SDL_VIDEO_RENDER_OGL@
 | 
			
		||||
#cmakedefine SDL_VIDEO_RENDER_OGL_ES @SDL_VIDEO_RENDER_OGL_ES@
 | 
			
		||||
#cmakedefine SDL_VIDEO_RENDER_OGL_ES2 @SDL_VIDEO_RENDER_OGL_ES2@
 | 
			
		||||
#cmakedefine SDL_VIDEO_RENDER_DIRECTFB @SDL_VIDEO_RENDER_DIRECTFB@
 | 
			
		||||
 | 
			
		||||
/* Enable OpenGL support */
 | 
			
		||||
#cmakedefine SDL_VIDEO_OPENGL @SDL_VIDEO_OPENGL@
 | 
			
		||||
#cmakedefine SDL_VIDEO_OPENGL_ES @SDL_VIDEO_OPENGL_ES@
 | 
			
		||||
#cmakedefine SDL_VIDEO_OPENGL_ES2 @SDL_VIDEO_OPENGL_ES2@
 | 
			
		||||
#cmakedefine SDL_VIDEO_OPENGL_BGL @SDL_VIDEO_OPENGL_BGL@
 | 
			
		||||
#cmakedefine SDL_VIDEO_OPENGL_CGL @SDL_VIDEO_OPENGL_CGL@
 | 
			
		||||
#cmakedefine SDL_VIDEO_OPENGL_GLX @SDL_VIDEO_OPENGL_GLX@
 | 
			
		||||
#cmakedefine SDL_VIDEO_OPENGL_WGL @SDL_VIDEO_OPENGL_WGL@
 | 
			
		||||
#cmakedefine SDL_VIDEO_OPENGL_EGL @SDL_VIDEO_OPENGL_EGL@
 | 
			
		||||
#cmakedefine SDL_VIDEO_OPENGL_OSMESA @SDL_VIDEO_OPENGL_OSMESA@
 | 
			
		||||
#cmakedefine SDL_VIDEO_OPENGL_OSMESA_DYNAMIC @SDL_VIDEO_OPENGL_OSMESA_DYNAMIC@
 | 
			
		||||
 | 
			
		||||
/* Enable system power support */
 | 
			
		||||
#cmakedefine SDL_POWER_ANDROID @SDL_POWER_ANDROID@
 | 
			
		||||
#cmakedefine SDL_POWER_LINUX @SDL_POWER_LINUX@
 | 
			
		||||
#cmakedefine SDL_POWER_WINDOWS @SDL_POWER_WINDOWS@
 | 
			
		||||
#cmakedefine SDL_POWER_MACOSX @SDL_POWER_MACOSX@
 | 
			
		||||
#cmakedefine SDL_POWER_HAIKU @SDL_POWER_HAIKU@
 | 
			
		||||
#cmakedefine SDL_POWER_EMSCRIPTEN @SDL_POWER_EMSCRIPTEN@
 | 
			
		||||
#cmakedefine SDL_POWER_HARDWIRED @SDL_POWER_HARDWIRED@
 | 
			
		||||
 | 
			
		||||
/* Enable system filesystem support */
 | 
			
		||||
#cmakedefine SDL_FILESYSTEM_ANDROID @SDL_FILESYSTEM_ANDROID@
 | 
			
		||||
#cmakedefine SDL_FILESYSTEM_HAIKU @SDL_FILESYSTEM_HAIKU@
 | 
			
		||||
#cmakedefine SDL_FILESYSTEM_COCOA @SDL_FILESYSTEM_COCOA@
 | 
			
		||||
#cmakedefine SDL_FILESYSTEM_DUMMY @SDL_FILESYSTEM_DUMMY@
 | 
			
		||||
#cmakedefine SDL_FILESYSTEM_UNIX @SDL_FILESYSTEM_UNIX@
 | 
			
		||||
#cmakedefine SDL_FILESYSTEM_WINDOWS @SDL_FILESYSTEM_WINDOWS@
 | 
			
		||||
#cmakedefine SDL_FILESYSTEM_EMSCRIPTEN @SDL_FILESYSTEM_EMSCRIPTEN@
 | 
			
		||||
 | 
			
		||||
/* Enable assembly routines */
 | 
			
		||||
#cmakedefine SDL_ASSEMBLY_ROUTINES @SDL_ASSEMBLY_ROUTINES@
 | 
			
		||||
#cmakedefine SDL_ALTIVEC_BLITTERS @SDL_ALTIVEC_BLITTERS@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Platform specific definitions */
 | 
			
		||||
#if !defined(__WIN32__)
 | 
			
		||||
#  if !defined(_STDINT_H_) && !defined(_STDINT_H) && !defined(HAVE_STDINT_H) && !defined(_HAVE_STDINT_H)
 | 
			
		||||
typedef unsigned int size_t;
 | 
			
		||||
typedef signed char int8_t;
 | 
			
		||||
typedef unsigned char uint8_t;
 | 
			
		||||
typedef signed short int16_t;
 | 
			
		||||
typedef unsigned short uint16_t;
 | 
			
		||||
typedef signed int int32_t;
 | 
			
		||||
typedef unsigned int uint32_t;
 | 
			
		||||
typedef signed long long int64_t;
 | 
			
		||||
typedef unsigned long long uint64_t;
 | 
			
		||||
typedef unsigned long uintptr_t;
 | 
			
		||||
#  endif /* if (stdint.h isn't available) */
 | 
			
		||||
#else /* __WIN32__ */
 | 
			
		||||
#  if !defined(_STDINT_H_) && !defined(HAVE_STDINT_H) && !defined(_HAVE_STDINT_H)
 | 
			
		||||
#    if defined(__GNUC__) || defined(__DMC__) || defined(__WATCOMC__)
 | 
			
		||||
#define HAVE_STDINT_H	1
 | 
			
		||||
#    elif defined(_MSC_VER)
 | 
			
		||||
typedef signed __int8 int8_t;
 | 
			
		||||
typedef unsigned __int8 uint8_t;
 | 
			
		||||
typedef signed __int16 int16_t;
 | 
			
		||||
typedef unsigned __int16 uint16_t;
 | 
			
		||||
typedef signed __int32 int32_t;
 | 
			
		||||
typedef unsigned __int32 uint32_t;
 | 
			
		||||
typedef signed __int64 int64_t;
 | 
			
		||||
typedef unsigned __int64 uint64_t;
 | 
			
		||||
#      ifndef _UINTPTR_T_DEFINED
 | 
			
		||||
#        ifdef  _WIN64
 | 
			
		||||
typedef unsigned __int64 uintptr_t;
 | 
			
		||||
#          else
 | 
			
		||||
typedef unsigned int uintptr_t;
 | 
			
		||||
#        endif
 | 
			
		||||
#define _UINTPTR_T_DEFINED
 | 
			
		||||
#      endif
 | 
			
		||||
/* Older Visual C++ headers don't have the Win64-compatible typedefs... */
 | 
			
		||||
#      if ((_MSC_VER <= 1200) && (!defined(DWORD_PTR)))
 | 
			
		||||
#define DWORD_PTR DWORD
 | 
			
		||||
#      endif
 | 
			
		||||
#      if ((_MSC_VER <= 1200) && (!defined(LONG_PTR)))
 | 
			
		||||
#define LONG_PTR LONG
 | 
			
		||||
#      endif
 | 
			
		||||
#    else /* !__GNUC__ && !_MSC_VER */
 | 
			
		||||
typedef signed char int8_t;
 | 
			
		||||
typedef unsigned char uint8_t;
 | 
			
		||||
typedef signed short int16_t;
 | 
			
		||||
typedef unsigned short uint16_t;
 | 
			
		||||
typedef signed int int32_t;
 | 
			
		||||
typedef unsigned int uint32_t;
 | 
			
		||||
typedef signed long long int64_t;
 | 
			
		||||
typedef unsigned long long uint64_t;
 | 
			
		||||
#      ifndef _SIZE_T_DEFINED_
 | 
			
		||||
#define _SIZE_T_DEFINED_
 | 
			
		||||
typedef unsigned int size_t;
 | 
			
		||||
#      endif
 | 
			
		||||
typedef unsigned int uintptr_t;
 | 
			
		||||
#    endif /* __GNUC__ || _MSC_VER */
 | 
			
		||||
#  endif /* !_STDINT_H_ && !HAVE_STDINT_H */
 | 
			
		||||
#endif /* __WIN32__ */
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_config_h */
 | 
			
		||||
							
								
								
									
										359
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_config.h.in
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										359
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_config.h.in
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,359 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_config_h
 | 
			
		||||
#define _SDL_config_h
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_config.h.in
 | 
			
		||||
 *
 | 
			
		||||
 *  This is a set of defines to configure the SDL features
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* General platform specific identifiers */
 | 
			
		||||
#include "SDL_platform.h"
 | 
			
		||||
 | 
			
		||||
/* Make sure that this isn't included by Visual C++ */
 | 
			
		||||
#ifdef _MSC_VER
 | 
			
		||||
#error You should run hg revert SDL_config.h 
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* C language features */
 | 
			
		||||
#undef const
 | 
			
		||||
#undef inline
 | 
			
		||||
#undef volatile
 | 
			
		||||
 | 
			
		||||
/* C datatypes */
 | 
			
		||||
#ifdef __LP64__
 | 
			
		||||
#define SIZEOF_VOIDP 8
 | 
			
		||||
#else
 | 
			
		||||
#define SIZEOF_VOIDP 4
 | 
			
		||||
#endif
 | 
			
		||||
#undef HAVE_GCC_ATOMICS
 | 
			
		||||
#undef HAVE_GCC_SYNC_LOCK_TEST_AND_SET
 | 
			
		||||
 | 
			
		||||
#undef HAVE_DDRAW_H
 | 
			
		||||
#undef HAVE_DINPUT_H
 | 
			
		||||
#undef HAVE_DSOUND_H
 | 
			
		||||
#undef HAVE_DXGI_H
 | 
			
		||||
#undef HAVE_XINPUT_H
 | 
			
		||||
 | 
			
		||||
/* Comment this if you want to build without any C library requirements */
 | 
			
		||||
#undef HAVE_LIBC
 | 
			
		||||
#if HAVE_LIBC
 | 
			
		||||
 | 
			
		||||
/* Useful headers */
 | 
			
		||||
#undef HAVE_ALLOCA_H
 | 
			
		||||
#undef HAVE_SYS_TYPES_H
 | 
			
		||||
#undef HAVE_STDIO_H
 | 
			
		||||
#undef STDC_HEADERS
 | 
			
		||||
#undef HAVE_STDLIB_H
 | 
			
		||||
#undef HAVE_STDARG_H
 | 
			
		||||
#undef HAVE_MALLOC_H
 | 
			
		||||
#undef HAVE_MEMORY_H
 | 
			
		||||
#undef HAVE_STRING_H
 | 
			
		||||
#undef HAVE_STRINGS_H
 | 
			
		||||
#undef HAVE_INTTYPES_H
 | 
			
		||||
#undef HAVE_STDINT_H
 | 
			
		||||
#undef HAVE_CTYPE_H
 | 
			
		||||
#undef HAVE_MATH_H
 | 
			
		||||
#undef HAVE_ICONV_H
 | 
			
		||||
#undef HAVE_SIGNAL_H
 | 
			
		||||
#undef HAVE_ALTIVEC_H
 | 
			
		||||
#undef HAVE_PTHREAD_NP_H
 | 
			
		||||
#undef HAVE_LIBUDEV_H
 | 
			
		||||
#undef HAVE_DBUS_DBUS_H
 | 
			
		||||
#undef HAVE_IBUS_IBUS_H
 | 
			
		||||
 | 
			
		||||
/* C library functions */
 | 
			
		||||
#undef HAVE_MALLOC
 | 
			
		||||
#undef HAVE_CALLOC
 | 
			
		||||
#undef HAVE_REALLOC
 | 
			
		||||
#undef HAVE_FREE
 | 
			
		||||
#undef HAVE_ALLOCA
 | 
			
		||||
#ifndef __WIN32__ /* Don't use C runtime versions of these on Windows */
 | 
			
		||||
#undef HAVE_GETENV
 | 
			
		||||
#undef HAVE_SETENV
 | 
			
		||||
#undef HAVE_PUTENV
 | 
			
		||||
#undef HAVE_UNSETENV
 | 
			
		||||
#endif
 | 
			
		||||
#undef HAVE_QSORT
 | 
			
		||||
#undef HAVE_ABS
 | 
			
		||||
#undef HAVE_BCOPY
 | 
			
		||||
#undef HAVE_MEMSET
 | 
			
		||||
#undef HAVE_MEMCPY
 | 
			
		||||
#undef HAVE_MEMMOVE
 | 
			
		||||
#undef HAVE_MEMCMP
 | 
			
		||||
#undef HAVE_STRLEN
 | 
			
		||||
#undef HAVE_STRLCPY
 | 
			
		||||
#undef HAVE_STRLCAT
 | 
			
		||||
#undef HAVE_STRDUP
 | 
			
		||||
#undef HAVE__STRREV
 | 
			
		||||
#undef HAVE__STRUPR
 | 
			
		||||
#undef HAVE__STRLWR
 | 
			
		||||
#undef HAVE_INDEX
 | 
			
		||||
#undef HAVE_RINDEX
 | 
			
		||||
#undef HAVE_STRCHR
 | 
			
		||||
#undef HAVE_STRRCHR
 | 
			
		||||
#undef HAVE_STRSTR
 | 
			
		||||
#undef HAVE_ITOA
 | 
			
		||||
#undef HAVE__LTOA
 | 
			
		||||
#undef HAVE__UITOA
 | 
			
		||||
#undef HAVE__ULTOA
 | 
			
		||||
#undef HAVE_STRTOL
 | 
			
		||||
#undef HAVE_STRTOUL
 | 
			
		||||
#undef HAVE__I64TOA
 | 
			
		||||
#undef HAVE__UI64TOA
 | 
			
		||||
#undef HAVE_STRTOLL
 | 
			
		||||
#undef HAVE_STRTOULL
 | 
			
		||||
#undef HAVE_STRTOD
 | 
			
		||||
#undef HAVE_ATOI
 | 
			
		||||
#undef HAVE_ATOF
 | 
			
		||||
#undef HAVE_STRCMP
 | 
			
		||||
#undef HAVE_STRNCMP
 | 
			
		||||
#undef HAVE__STRICMP
 | 
			
		||||
#undef HAVE_STRCASECMP
 | 
			
		||||
#undef HAVE__STRNICMP
 | 
			
		||||
#undef HAVE_STRNCASECMP
 | 
			
		||||
#undef HAVE_SSCANF
 | 
			
		||||
#undef HAVE_VSSCANF
 | 
			
		||||
#undef HAVE_SNPRINTF
 | 
			
		||||
#undef HAVE_VSNPRINTF
 | 
			
		||||
#undef HAVE_M_PI
 | 
			
		||||
#undef HAVE_ATAN
 | 
			
		||||
#undef HAVE_ATAN2
 | 
			
		||||
#undef HAVE_ACOS
 | 
			
		||||
#undef HAVE_ASIN
 | 
			
		||||
#undef HAVE_CEIL
 | 
			
		||||
#undef HAVE_COPYSIGN
 | 
			
		||||
#undef HAVE_COS
 | 
			
		||||
#undef HAVE_COSF
 | 
			
		||||
#undef HAVE_FABS
 | 
			
		||||
#undef HAVE_FLOOR
 | 
			
		||||
#undef HAVE_LOG
 | 
			
		||||
#undef HAVE_POW
 | 
			
		||||
#undef HAVE_SCALBN
 | 
			
		||||
#undef HAVE_SIN
 | 
			
		||||
#undef HAVE_SINF
 | 
			
		||||
#undef HAVE_SQRT
 | 
			
		||||
#undef HAVE_SQRTF
 | 
			
		||||
#undef HAVE_TAN
 | 
			
		||||
#undef HAVE_TANF
 | 
			
		||||
#undef HAVE_FSEEKO
 | 
			
		||||
#undef HAVE_FSEEKO64
 | 
			
		||||
#undef HAVE_SIGACTION
 | 
			
		||||
#undef HAVE_SA_SIGACTION
 | 
			
		||||
#undef HAVE_SETJMP
 | 
			
		||||
#undef HAVE_NANOSLEEP
 | 
			
		||||
#undef HAVE_SYSCONF
 | 
			
		||||
#undef HAVE_SYSCTLBYNAME
 | 
			
		||||
#undef HAVE_CLOCK_GETTIME
 | 
			
		||||
#undef HAVE_GETPAGESIZE
 | 
			
		||||
#undef HAVE_MPROTECT
 | 
			
		||||
#undef HAVE_ICONV
 | 
			
		||||
#undef HAVE_PTHREAD_SETNAME_NP
 | 
			
		||||
#undef HAVE_PTHREAD_SET_NAME_NP
 | 
			
		||||
#undef HAVE_SEM_TIMEDWAIT
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
#define HAVE_STDARG_H   1
 | 
			
		||||
#define HAVE_STDDEF_H   1
 | 
			
		||||
#define HAVE_STDINT_H   1
 | 
			
		||||
#endif /* HAVE_LIBC */
 | 
			
		||||
 | 
			
		||||
/* SDL internal assertion support */
 | 
			
		||||
#undef SDL_DEFAULT_ASSERT_LEVEL
 | 
			
		||||
 | 
			
		||||
/* Allow disabling of core subsystems */
 | 
			
		||||
#undef SDL_ATOMIC_DISABLED
 | 
			
		||||
#undef SDL_AUDIO_DISABLED
 | 
			
		||||
#undef SDL_CPUINFO_DISABLED
 | 
			
		||||
#undef SDL_EVENTS_DISABLED
 | 
			
		||||
#undef SDL_FILE_DISABLED
 | 
			
		||||
#undef SDL_JOYSTICK_DISABLED
 | 
			
		||||
#undef SDL_HAPTIC_DISABLED
 | 
			
		||||
#undef SDL_LOADSO_DISABLED
 | 
			
		||||
#undef SDL_RENDER_DISABLED
 | 
			
		||||
#undef SDL_THREADS_DISABLED
 | 
			
		||||
#undef SDL_TIMERS_DISABLED
 | 
			
		||||
#undef SDL_VIDEO_DISABLED
 | 
			
		||||
#undef SDL_POWER_DISABLED
 | 
			
		||||
#undef SDL_FILESYSTEM_DISABLED
 | 
			
		||||
 | 
			
		||||
/* Enable various audio drivers */
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_ALSA
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_ALSA_DYNAMIC
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_ARTS
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_ARTS_DYNAMIC
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_PULSEAUDIO
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_HAIKU
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_BSD
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_COREAUDIO
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_DISK
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_DUMMY
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_ANDROID
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_XAUDIO2
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_DSOUND
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_ESD
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_ESD_DYNAMIC
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_NACL
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_NAS
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_NAS_DYNAMIC
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_SNDIO
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_SNDIO_DYNAMIC
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_OSS
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_OSS_SOUNDCARD_H
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_PAUDIO
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_QSA
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_SUNAUDIO
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_WINMM
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_FUSIONSOUND
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_FUSIONSOUND_DYNAMIC
 | 
			
		||||
#undef SDL_AUDIO_DRIVER_EMSCRIPTEN
 | 
			
		||||
 | 
			
		||||
/* Enable various input drivers */
 | 
			
		||||
#undef SDL_INPUT_LINUXEV
 | 
			
		||||
#undef SDL_INPUT_LINUXKD
 | 
			
		||||
#undef SDL_INPUT_TSLIB
 | 
			
		||||
#undef SDL_JOYSTICK_HAIKU
 | 
			
		||||
#undef SDL_JOYSTICK_DINPUT
 | 
			
		||||
#undef SDL_JOYSTICK_XINPUT
 | 
			
		||||
#undef SDL_JOYSTICK_DUMMY
 | 
			
		||||
#undef SDL_JOYSTICK_IOKIT
 | 
			
		||||
#undef SDL_JOYSTICK_LINUX
 | 
			
		||||
#undef SDL_JOYSTICK_ANDROID
 | 
			
		||||
#undef SDL_JOYSTICK_WINMM
 | 
			
		||||
#undef SDL_JOYSTICK_USBHID
 | 
			
		||||
#undef SDL_JOYSTICK_USBHID_MACHINE_JOYSTICK_H
 | 
			
		||||
#undef SDL_JOYSTICK_EMSCRIPTEN
 | 
			
		||||
#undef SDL_HAPTIC_DUMMY
 | 
			
		||||
#undef SDL_HAPTIC_LINUX
 | 
			
		||||
#undef SDL_HAPTIC_IOKIT
 | 
			
		||||
#undef SDL_HAPTIC_DINPUT
 | 
			
		||||
#undef SDL_HAPTIC_XINPUT
 | 
			
		||||
 | 
			
		||||
/* Enable various shared object loading systems */
 | 
			
		||||
#undef SDL_LOADSO_HAIKU
 | 
			
		||||
#undef SDL_LOADSO_DLOPEN
 | 
			
		||||
#undef SDL_LOADSO_DUMMY
 | 
			
		||||
#undef SDL_LOADSO_LDG
 | 
			
		||||
#undef SDL_LOADSO_WINDOWS
 | 
			
		||||
 | 
			
		||||
/* Enable various threading systems */
 | 
			
		||||
#undef SDL_THREAD_PTHREAD
 | 
			
		||||
#undef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX
 | 
			
		||||
#undef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP
 | 
			
		||||
#undef SDL_THREAD_WINDOWS
 | 
			
		||||
 | 
			
		||||
/* Enable various timer systems */
 | 
			
		||||
#undef SDL_TIMER_HAIKU
 | 
			
		||||
#undef SDL_TIMER_DUMMY
 | 
			
		||||
#undef SDL_TIMER_UNIX
 | 
			
		||||
#undef SDL_TIMER_WINDOWS
 | 
			
		||||
 | 
			
		||||
/* Enable various video drivers */
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_HAIKU
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_COCOA
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_DIRECTFB
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_DUMMY
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_WINDOWS
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_WAYLAND
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_MIR
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_MIR_DYNAMIC
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_MIR_DYNAMIC_XKBCOMMON
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_X11
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_RPI
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_ANDROID
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_EMSCRIPTEN
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_X11_DYNAMIC
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_X11_XCURSOR
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_X11_XDBE
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_X11_XINERAMA
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_X11_XINPUT2
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_X11_XRANDR
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_X11_XSCRNSAVER
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_X11_XSHAPE
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_X11_XVIDMODE
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_NACL
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_VIVANTE
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_VIVANTE_VDK
 | 
			
		||||
 | 
			
		||||
#undef SDL_VIDEO_RENDER_D3D
 | 
			
		||||
#undef SDL_VIDEO_RENDER_D3D11
 | 
			
		||||
#undef SDL_VIDEO_RENDER_OGL
 | 
			
		||||
#undef SDL_VIDEO_RENDER_OGL_ES
 | 
			
		||||
#undef SDL_VIDEO_RENDER_OGL_ES2
 | 
			
		||||
#undef SDL_VIDEO_RENDER_DIRECTFB
 | 
			
		||||
 | 
			
		||||
/* Enable OpenGL support */
 | 
			
		||||
#undef SDL_VIDEO_OPENGL
 | 
			
		||||
#undef SDL_VIDEO_OPENGL_ES
 | 
			
		||||
#undef SDL_VIDEO_OPENGL_ES2
 | 
			
		||||
#undef SDL_VIDEO_OPENGL_BGL
 | 
			
		||||
#undef SDL_VIDEO_OPENGL_CGL
 | 
			
		||||
#undef SDL_VIDEO_OPENGL_EGL
 | 
			
		||||
#undef SDL_VIDEO_OPENGL_GLX
 | 
			
		||||
#undef SDL_VIDEO_OPENGL_WGL
 | 
			
		||||
#undef SDL_VIDEO_OPENGL_OSMESA
 | 
			
		||||
#undef SDL_VIDEO_OPENGL_OSMESA_DYNAMIC
 | 
			
		||||
 | 
			
		||||
/* Enable system power support */
 | 
			
		||||
#undef SDL_POWER_LINUX
 | 
			
		||||
#undef SDL_POWER_WINDOWS
 | 
			
		||||
#undef SDL_POWER_MACOSX
 | 
			
		||||
#undef SDL_POWER_HAIKU
 | 
			
		||||
#undef SDL_POWER_ANDROID
 | 
			
		||||
#undef SDL_POWER_EMSCRIPTEN
 | 
			
		||||
#undef SDL_POWER_HARDWIRED
 | 
			
		||||
 | 
			
		||||
/* Enable system filesystem support */
 | 
			
		||||
#undef SDL_FILESYSTEM_HAIKU
 | 
			
		||||
#undef SDL_FILESYSTEM_COCOA
 | 
			
		||||
#undef SDL_FILESYSTEM_DUMMY
 | 
			
		||||
#undef SDL_FILESYSTEM_UNIX
 | 
			
		||||
#undef SDL_FILESYSTEM_WINDOWS
 | 
			
		||||
#undef SDL_FILESYSTEM_NACL
 | 
			
		||||
#undef SDL_FILESYSTEM_ANDROID
 | 
			
		||||
#undef SDL_FILESYSTEM_EMSCRIPTEN
 | 
			
		||||
 | 
			
		||||
/* Enable assembly routines */
 | 
			
		||||
#undef SDL_ASSEMBLY_ROUTINES
 | 
			
		||||
#undef SDL_ALTIVEC_BLITTERS
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_config_h */
 | 
			
		||||
@ -0,0 +1,145 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_config_android_h
 | 
			
		||||
#define _SDL_config_android_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_platform.h"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_config_android.h
 | 
			
		||||
 *
 | 
			
		||||
 *  This is a configuration that can be used to build SDL for Android
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <stdarg.h>
 | 
			
		||||
 | 
			
		||||
#define HAVE_GCC_ATOMICS    1
 | 
			
		||||
 | 
			
		||||
#define HAVE_ALLOCA_H       1
 | 
			
		||||
#define HAVE_SYS_TYPES_H    1
 | 
			
		||||
#define HAVE_STDIO_H    1
 | 
			
		||||
#define STDC_HEADERS    1
 | 
			
		||||
#define HAVE_STRING_H   1
 | 
			
		||||
#define HAVE_INTTYPES_H 1
 | 
			
		||||
#define HAVE_STDINT_H   1
 | 
			
		||||
#define HAVE_CTYPE_H    1
 | 
			
		||||
#define HAVE_MATH_H 1
 | 
			
		||||
 | 
			
		||||
/* C library functions */
 | 
			
		||||
#define HAVE_MALLOC 1
 | 
			
		||||
#define HAVE_CALLOC 1
 | 
			
		||||
#define HAVE_REALLOC    1
 | 
			
		||||
#define HAVE_FREE   1
 | 
			
		||||
#define HAVE_ALLOCA 1
 | 
			
		||||
#define HAVE_GETENV 1
 | 
			
		||||
#define HAVE_SETENV 1
 | 
			
		||||
#define HAVE_PUTENV 1
 | 
			
		||||
#define HAVE_SETENV 1
 | 
			
		||||
#define HAVE_UNSETENV   1
 | 
			
		||||
#define HAVE_QSORT  1
 | 
			
		||||
#define HAVE_ABS    1
 | 
			
		||||
#define HAVE_BCOPY  1
 | 
			
		||||
#define HAVE_MEMSET 1
 | 
			
		||||
#define HAVE_MEMCPY 1
 | 
			
		||||
#define HAVE_MEMMOVE    1
 | 
			
		||||
#define HAVE_MEMCMP 1
 | 
			
		||||
#define HAVE_STRLEN 1
 | 
			
		||||
#define HAVE_STRLCPY    1
 | 
			
		||||
#define HAVE_STRLCAT    1
 | 
			
		||||
#define HAVE_STRDUP 1
 | 
			
		||||
#define HAVE_STRCHR 1
 | 
			
		||||
#define HAVE_STRRCHR    1
 | 
			
		||||
#define HAVE_STRSTR 1
 | 
			
		||||
#define HAVE_STRTOL 1
 | 
			
		||||
#define HAVE_STRTOUL    1
 | 
			
		||||
#define HAVE_STRTOLL    1
 | 
			
		||||
#define HAVE_STRTOULL   1
 | 
			
		||||
#define HAVE_STRTOD 1
 | 
			
		||||
#define HAVE_ATOI   1
 | 
			
		||||
#define HAVE_STRCMP 1
 | 
			
		||||
#define HAVE_STRNCMP    1
 | 
			
		||||
#define HAVE_STRCASECMP 1
 | 
			
		||||
#define HAVE_STRNCASECMP 1
 | 
			
		||||
#define HAVE_VSSCANF 1
 | 
			
		||||
#define HAVE_VSNPRINTF  1
 | 
			
		||||
#define HAVE_M_PI   1
 | 
			
		||||
#define HAVE_ATAN   1
 | 
			
		||||
#define HAVE_ATAN2  1
 | 
			
		||||
#define HAVE_ACOS  1
 | 
			
		||||
#define HAVE_ASIN  1
 | 
			
		||||
#define HAVE_CEIL   1
 | 
			
		||||
#define HAVE_COPYSIGN   1
 | 
			
		||||
#define HAVE_COS    1
 | 
			
		||||
#define HAVE_COSF   1
 | 
			
		||||
#define HAVE_FABS   1
 | 
			
		||||
#define HAVE_FLOOR  1
 | 
			
		||||
#define HAVE_LOG    1
 | 
			
		||||
#define HAVE_POW    1
 | 
			
		||||
#define HAVE_SCALBN 1
 | 
			
		||||
#define HAVE_SIN    1
 | 
			
		||||
#define HAVE_SINF   1
 | 
			
		||||
#define HAVE_SQRT   1
 | 
			
		||||
#define HAVE_SQRTF  1
 | 
			
		||||
#define HAVE_TAN    1
 | 
			
		||||
#define HAVE_TANF   1
 | 
			
		||||
#define HAVE_SETJMP 1
 | 
			
		||||
#define HAVE_NANOSLEEP  1
 | 
			
		||||
#define HAVE_SYSCONF    1
 | 
			
		||||
#define HAVE_CLOCK_GETTIME	1
 | 
			
		||||
 | 
			
		||||
#define SIZEOF_VOIDP 4
 | 
			
		||||
 | 
			
		||||
/* Enable various audio drivers */
 | 
			
		||||
#define SDL_AUDIO_DRIVER_ANDROID    1
 | 
			
		||||
#define SDL_AUDIO_DRIVER_DUMMY  1
 | 
			
		||||
 | 
			
		||||
/* Enable various input drivers */
 | 
			
		||||
#define SDL_JOYSTICK_ANDROID    1
 | 
			
		||||
#define SDL_HAPTIC_DUMMY    1
 | 
			
		||||
 | 
			
		||||
/* Enable various shared object loading systems */
 | 
			
		||||
#define SDL_LOADSO_DLOPEN   1
 | 
			
		||||
 | 
			
		||||
/* Enable various threading systems */
 | 
			
		||||
#define SDL_THREAD_PTHREAD  1
 | 
			
		||||
#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX  1
 | 
			
		||||
 | 
			
		||||
/* Enable various timer systems */
 | 
			
		||||
#define SDL_TIMER_UNIX  1
 | 
			
		||||
 | 
			
		||||
/* Enable various video drivers */
 | 
			
		||||
#define SDL_VIDEO_DRIVER_ANDROID 1
 | 
			
		||||
 | 
			
		||||
/* Enable OpenGL ES */
 | 
			
		||||
#define SDL_VIDEO_OPENGL_ES 1
 | 
			
		||||
#define SDL_VIDEO_OPENGL_ES2 1
 | 
			
		||||
#define SDL_VIDEO_OPENGL_EGL 1
 | 
			
		||||
#define SDL_VIDEO_RENDER_OGL_ES 1
 | 
			
		||||
#define SDL_VIDEO_RENDER_OGL_ES2    1
 | 
			
		||||
 | 
			
		||||
/* Enable system power support */
 | 
			
		||||
#define SDL_POWER_ANDROID 1
 | 
			
		||||
 | 
			
		||||
/* Enable the filesystem driver */
 | 
			
		||||
#define SDL_FILESYSTEM_ANDROID   1
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_config_android_h */
 | 
			
		||||
@ -0,0 +1,162 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_config_iphoneos_h
 | 
			
		||||
#define _SDL_config_iphoneos_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_platform.h"
 | 
			
		||||
 | 
			
		||||
#ifdef __LP64__
 | 
			
		||||
#define SIZEOF_VOIDP 8
 | 
			
		||||
#else
 | 
			
		||||
#define SIZEOF_VOIDP 4
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define HAVE_GCC_ATOMICS    1
 | 
			
		||||
 | 
			
		||||
#define HAVE_ALLOCA_H       1
 | 
			
		||||
#define HAVE_SYS_TYPES_H    1
 | 
			
		||||
#define HAVE_STDIO_H    1
 | 
			
		||||
#define STDC_HEADERS    1
 | 
			
		||||
#define HAVE_STRING_H   1
 | 
			
		||||
#define HAVE_INTTYPES_H 1
 | 
			
		||||
#define HAVE_STDINT_H   1
 | 
			
		||||
#define HAVE_CTYPE_H    1
 | 
			
		||||
#define HAVE_MATH_H 1
 | 
			
		||||
#define HAVE_SIGNAL_H   1
 | 
			
		||||
 | 
			
		||||
/* C library functions */
 | 
			
		||||
#define HAVE_MALLOC 1
 | 
			
		||||
#define HAVE_CALLOC 1
 | 
			
		||||
#define HAVE_REALLOC    1
 | 
			
		||||
#define HAVE_FREE   1
 | 
			
		||||
#define HAVE_ALLOCA 1
 | 
			
		||||
#define HAVE_GETENV 1
 | 
			
		||||
#define HAVE_SETENV 1
 | 
			
		||||
#define HAVE_PUTENV 1
 | 
			
		||||
#define HAVE_SETENV 1
 | 
			
		||||
#define HAVE_UNSETENV   1
 | 
			
		||||
#define HAVE_QSORT  1
 | 
			
		||||
#define HAVE_ABS    1
 | 
			
		||||
#define HAVE_BCOPY  1
 | 
			
		||||
#define HAVE_MEMSET 1
 | 
			
		||||
#define HAVE_MEMCPY 1
 | 
			
		||||
#define HAVE_MEMMOVE    1
 | 
			
		||||
#define HAVE_MEMCMP 1
 | 
			
		||||
#define HAVE_STRLEN 1
 | 
			
		||||
#define HAVE_STRLCPY    1
 | 
			
		||||
#define HAVE_STRLCAT    1
 | 
			
		||||
#define HAVE_STRDUP 1
 | 
			
		||||
#define HAVE_STRCHR 1
 | 
			
		||||
#define HAVE_STRRCHR    1
 | 
			
		||||
#define HAVE_STRSTR 1
 | 
			
		||||
#define HAVE_STRTOL 1
 | 
			
		||||
#define HAVE_STRTOUL    1
 | 
			
		||||
#define HAVE_STRTOLL    1
 | 
			
		||||
#define HAVE_STRTOULL   1
 | 
			
		||||
#define HAVE_STRTOD 1
 | 
			
		||||
#define HAVE_ATOI   1
 | 
			
		||||
#define HAVE_ATOF   1
 | 
			
		||||
#define HAVE_STRCMP 1
 | 
			
		||||
#define HAVE_STRNCMP    1
 | 
			
		||||
#define HAVE_STRCASECMP 1
 | 
			
		||||
#define HAVE_STRNCASECMP 1
 | 
			
		||||
#define HAVE_VSSCANF 1
 | 
			
		||||
#define HAVE_VSNPRINTF  1
 | 
			
		||||
#define HAVE_M_PI   1
 | 
			
		||||
#define HAVE_ATAN   1
 | 
			
		||||
#define HAVE_ATAN2  1
 | 
			
		||||
#define HAVE_ACOS  1
 | 
			
		||||
#define HAVE_ASIN  1
 | 
			
		||||
#define HAVE_CEIL   1
 | 
			
		||||
#define HAVE_COPYSIGN   1
 | 
			
		||||
#define HAVE_COS    1
 | 
			
		||||
#define HAVE_COSF   1
 | 
			
		||||
#define HAVE_FABS   1
 | 
			
		||||
#define HAVE_FLOOR  1
 | 
			
		||||
#define HAVE_LOG    1
 | 
			
		||||
#define HAVE_POW    1
 | 
			
		||||
#define HAVE_SCALBN 1
 | 
			
		||||
#define HAVE_SIN    1
 | 
			
		||||
#define HAVE_SINF   1
 | 
			
		||||
#define HAVE_SQRT   1
 | 
			
		||||
#define HAVE_SQRTF  1
 | 
			
		||||
#define HAVE_TAN    1
 | 
			
		||||
#define HAVE_TANF   1
 | 
			
		||||
#define HAVE_SIGACTION  1
 | 
			
		||||
#define HAVE_SETJMP 1
 | 
			
		||||
#define HAVE_NANOSLEEP  1
 | 
			
		||||
#define HAVE_SYSCONF    1
 | 
			
		||||
#define HAVE_SYSCTLBYNAME 1
 | 
			
		||||
 | 
			
		||||
/* enable iPhone version of Core Audio driver */
 | 
			
		||||
#define SDL_AUDIO_DRIVER_COREAUDIO 1
 | 
			
		||||
/* Enable the dummy audio driver (src/audio/dummy/\*.c) */
 | 
			
		||||
#define SDL_AUDIO_DRIVER_DUMMY  1
 | 
			
		||||
 | 
			
		||||
/* Enable the stub haptic driver (src/haptic/dummy/\*.c) */
 | 
			
		||||
#define SDL_HAPTIC_DUMMY 1
 | 
			
		||||
 | 
			
		||||
/* Enable MFi joystick support */
 | 
			
		||||
#define SDL_JOYSTICK_MFI 1
 | 
			
		||||
 | 
			
		||||
/* Enable Unix style SO loading */
 | 
			
		||||
/* Technically this works, but violates the iOS dev agreement prior to iOS 8 */
 | 
			
		||||
/* #define SDL_LOADSO_DLOPEN 1 */
 | 
			
		||||
 | 
			
		||||
/* Enable the stub shared object loader (src/loadso/dummy/\*.c) */
 | 
			
		||||
#define SDL_LOADSO_DISABLED 1
 | 
			
		||||
 | 
			
		||||
/* Enable various threading systems */
 | 
			
		||||
#define SDL_THREAD_PTHREAD  1
 | 
			
		||||
#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX  1
 | 
			
		||||
 | 
			
		||||
/* Enable various timer systems */
 | 
			
		||||
#define SDL_TIMER_UNIX  1
 | 
			
		||||
 | 
			
		||||
/* Supported video drivers */
 | 
			
		||||
#define SDL_VIDEO_DRIVER_UIKIT  1
 | 
			
		||||
#define SDL_VIDEO_DRIVER_DUMMY  1
 | 
			
		||||
 | 
			
		||||
/* enable OpenGL ES */
 | 
			
		||||
#define SDL_VIDEO_OPENGL_ES2 1
 | 
			
		||||
#define SDL_VIDEO_OPENGL_ES 1
 | 
			
		||||
#define SDL_VIDEO_RENDER_OGL_ES 1
 | 
			
		||||
#define SDL_VIDEO_RENDER_OGL_ES2    1
 | 
			
		||||
 | 
			
		||||
/* Enable system power support */
 | 
			
		||||
#define SDL_POWER_UIKIT 1
 | 
			
		||||
 | 
			
		||||
/* enable iPhone keyboard support */
 | 
			
		||||
#define SDL_IPHONE_KEYBOARD 1
 | 
			
		||||
 | 
			
		||||
/* enable iOS extended launch screen */
 | 
			
		||||
#define SDL_IPHONE_LAUNCHSCREEN 1
 | 
			
		||||
 | 
			
		||||
/* Set max recognized G-force from accelerometer
 | 
			
		||||
   See src/joystick/uikit/SDL_sysjoystick.m for notes on why this is needed
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_IPHONE_MAX_GFORCE 5.0
 | 
			
		||||
 | 
			
		||||
/* enable filesystem support */
 | 
			
		||||
#define SDL_FILESYSTEM_COCOA   1
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_config_iphoneos_h */
 | 
			
		||||
@ -0,0 +1,188 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_config_macosx_h
 | 
			
		||||
#define _SDL_config_macosx_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_platform.h"
 | 
			
		||||
 | 
			
		||||
/* This gets us MAC_OS_X_VERSION_MIN_REQUIRED... */
 | 
			
		||||
#include <AvailabilityMacros.h>
 | 
			
		||||
 | 
			
		||||
/* This is a set of defines to configure the SDL features */
 | 
			
		||||
 | 
			
		||||
#ifdef __LP64__
 | 
			
		||||
    #define SIZEOF_VOIDP 8
 | 
			
		||||
#else
 | 
			
		||||
    #define SIZEOF_VOIDP 4
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Useful headers */
 | 
			
		||||
#define HAVE_ALLOCA_H       1
 | 
			
		||||
#define HAVE_SYS_TYPES_H    1
 | 
			
		||||
#define HAVE_STDIO_H    1
 | 
			
		||||
#define STDC_HEADERS    1
 | 
			
		||||
#define HAVE_STRING_H   1
 | 
			
		||||
#define HAVE_INTTYPES_H 1
 | 
			
		||||
#define HAVE_STDINT_H   1
 | 
			
		||||
#define HAVE_CTYPE_H    1
 | 
			
		||||
#define HAVE_MATH_H 1
 | 
			
		||||
#define HAVE_SIGNAL_H   1
 | 
			
		||||
 | 
			
		||||
/* C library functions */
 | 
			
		||||
#define HAVE_MALLOC 1
 | 
			
		||||
#define HAVE_CALLOC 1
 | 
			
		||||
#define HAVE_REALLOC    1
 | 
			
		||||
#define HAVE_FREE   1
 | 
			
		||||
#define HAVE_ALLOCA 1
 | 
			
		||||
#define HAVE_GETENV 1
 | 
			
		||||
#define HAVE_SETENV 1
 | 
			
		||||
#define HAVE_PUTENV 1
 | 
			
		||||
#define HAVE_UNSETENV   1
 | 
			
		||||
#define HAVE_QSORT  1
 | 
			
		||||
#define HAVE_ABS    1
 | 
			
		||||
#define HAVE_BCOPY  1
 | 
			
		||||
#define HAVE_MEMSET 1
 | 
			
		||||
#define HAVE_MEMCPY 1
 | 
			
		||||
#define HAVE_MEMMOVE    1
 | 
			
		||||
#define HAVE_MEMCMP 1
 | 
			
		||||
#define HAVE_STRLEN 1
 | 
			
		||||
#define HAVE_STRLCPY    1
 | 
			
		||||
#define HAVE_STRLCAT    1
 | 
			
		||||
#define HAVE_STRDUP 1
 | 
			
		||||
#define HAVE_STRCHR 1
 | 
			
		||||
#define HAVE_STRRCHR    1
 | 
			
		||||
#define HAVE_STRSTR 1
 | 
			
		||||
#define HAVE_STRTOL 1
 | 
			
		||||
#define HAVE_STRTOUL    1
 | 
			
		||||
#define HAVE_STRTOLL    1
 | 
			
		||||
#define HAVE_STRTOULL   1
 | 
			
		||||
#define HAVE_STRTOD 1
 | 
			
		||||
#define HAVE_ATOI   1
 | 
			
		||||
#define HAVE_ATOF   1
 | 
			
		||||
#define HAVE_STRCMP 1
 | 
			
		||||
#define HAVE_STRNCMP    1
 | 
			
		||||
#define HAVE_STRCASECMP 1
 | 
			
		||||
#define HAVE_STRNCASECMP 1
 | 
			
		||||
#define HAVE_VSSCANF 1
 | 
			
		||||
#define HAVE_VSNPRINTF  1
 | 
			
		||||
#define HAVE_CEIL   1
 | 
			
		||||
#define HAVE_COPYSIGN   1
 | 
			
		||||
#define HAVE_COS    1
 | 
			
		||||
#define HAVE_COSF   1
 | 
			
		||||
#define HAVE_FABS   1
 | 
			
		||||
#define HAVE_FLOOR  1
 | 
			
		||||
#define HAVE_LOG    1
 | 
			
		||||
#define HAVE_POW    1
 | 
			
		||||
#define HAVE_SCALBN 1
 | 
			
		||||
#define HAVE_SIN    1
 | 
			
		||||
#define HAVE_SINF   1
 | 
			
		||||
#define HAVE_SQRT   1
 | 
			
		||||
#define HAVE_SQRTF  1
 | 
			
		||||
#define HAVE_TAN    1
 | 
			
		||||
#define HAVE_TANF   1
 | 
			
		||||
#define HAVE_SIGACTION  1
 | 
			
		||||
#define HAVE_SETJMP 1
 | 
			
		||||
#define HAVE_NANOSLEEP  1
 | 
			
		||||
#define HAVE_SYSCONF    1
 | 
			
		||||
#define HAVE_SYSCTLBYNAME 1
 | 
			
		||||
#define HAVE_ATAN 1
 | 
			
		||||
#define HAVE_ATAN2 1
 | 
			
		||||
#define HAVE_ACOS 1
 | 
			
		||||
#define HAVE_ASIN 1
 | 
			
		||||
 | 
			
		||||
/* Enable various audio drivers */
 | 
			
		||||
#define SDL_AUDIO_DRIVER_COREAUDIO  1
 | 
			
		||||
#define SDL_AUDIO_DRIVER_DISK   1
 | 
			
		||||
#define SDL_AUDIO_DRIVER_DUMMY  1
 | 
			
		||||
 | 
			
		||||
/* Enable various input drivers */
 | 
			
		||||
#define SDL_JOYSTICK_IOKIT  1
 | 
			
		||||
#define SDL_HAPTIC_IOKIT    1
 | 
			
		||||
 | 
			
		||||
/* Enable various shared object loading systems */
 | 
			
		||||
#define SDL_LOADSO_DLOPEN   1
 | 
			
		||||
 | 
			
		||||
/* Enable various threading systems */
 | 
			
		||||
#define SDL_THREAD_PTHREAD  1
 | 
			
		||||
#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX  1
 | 
			
		||||
 | 
			
		||||
/* Enable various timer systems */
 | 
			
		||||
#define SDL_TIMER_UNIX  1
 | 
			
		||||
 | 
			
		||||
/* Enable various video drivers */
 | 
			
		||||
#define SDL_VIDEO_DRIVER_COCOA  1
 | 
			
		||||
#define SDL_VIDEO_DRIVER_DUMMY  1
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_X11
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_DYNAMIC "/usr/X11R6/lib/libX11.6.dylib"
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT "/usr/X11R6/lib/libXext.6.dylib"
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA "/usr/X11R6/lib/libXinerama.1.dylib"
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 "/usr/X11R6/lib/libXi.6.dylib"
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR "/usr/X11R6/lib/libXrandr.2.dylib"
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS "/usr/X11R6/lib/libXss.1.dylib"
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE "/usr/X11R6/lib/libXxf86vm.1.dylib"
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_XDBE 1
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_XINERAMA 1
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_XRANDR 1
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_XSCRNSAVER 1
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_XSHAPE 1
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_XVIDMODE 1
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM 1
 | 
			
		||||
 | 
			
		||||
#ifdef MAC_OS_X_VERSION_10_8
 | 
			
		||||
/*
 | 
			
		||||
 * No matter the versions targeted, this is the 10.8 or later SDK, so you have
 | 
			
		||||
 *  to use the external Xquartz, which is a more modern Xlib. Previous SDKs
 | 
			
		||||
 *  used an older Xlib.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_XINPUT2 1
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS 1
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY 1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef SDL_VIDEO_RENDER_OGL
 | 
			
		||||
#define SDL_VIDEO_RENDER_OGL    1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Enable OpenGL support */
 | 
			
		||||
#ifndef SDL_VIDEO_OPENGL
 | 
			
		||||
#define SDL_VIDEO_OPENGL    1
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef SDL_VIDEO_OPENGL_CGL
 | 
			
		||||
#define SDL_VIDEO_OPENGL_CGL    1
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef SDL_VIDEO_OPENGL_GLX
 | 
			
		||||
#define SDL_VIDEO_OPENGL_GLX    1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Enable system power support */
 | 
			
		||||
#define SDL_POWER_MACOSX 1
 | 
			
		||||
 | 
			
		||||
/* enable filesystem support */
 | 
			
		||||
#define SDL_FILESYSTEM_COCOA   1
 | 
			
		||||
 | 
			
		||||
/* Enable assembly routines */
 | 
			
		||||
#define SDL_ASSEMBLY_ROUTINES   1
 | 
			
		||||
#ifdef __ppc__
 | 
			
		||||
#define SDL_ALTIVEC_BLITTERS    1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_config_macosx_h */
 | 
			
		||||
@ -0,0 +1,81 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_config_minimal_h
 | 
			
		||||
#define _SDL_config_minimal_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_platform.h"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_config_minimal.h
 | 
			
		||||
 *
 | 
			
		||||
 *  This is the minimal configuration that can be used to build SDL.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#define HAVE_STDARG_H   1
 | 
			
		||||
#define HAVE_STDDEF_H   1
 | 
			
		||||
 | 
			
		||||
/* Most everything except Visual Studio 2008 and earlier has stdint.h now */
 | 
			
		||||
#if defined(_MSC_VER) && (_MSC_VER < 1600)
 | 
			
		||||
/* Here are some reasonable defaults */
 | 
			
		||||
typedef unsigned int size_t;
 | 
			
		||||
typedef signed char int8_t;
 | 
			
		||||
typedef unsigned char uint8_t;
 | 
			
		||||
typedef signed short int16_t;
 | 
			
		||||
typedef unsigned short uint16_t;
 | 
			
		||||
typedef signed int int32_t;
 | 
			
		||||
typedef unsigned int uint32_t;
 | 
			
		||||
typedef signed long long int64_t;
 | 
			
		||||
typedef unsigned long long uint64_t;
 | 
			
		||||
typedef unsigned long uintptr_t;
 | 
			
		||||
#else
 | 
			
		||||
#define HAVE_STDINT_H 1
 | 
			
		||||
#endif /* Visual Studio 2008 */
 | 
			
		||||
 | 
			
		||||
#ifdef __GNUC__
 | 
			
		||||
#define HAVE_GCC_SYNC_LOCK_TEST_AND_SET 1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Enable the dummy audio driver (src/audio/dummy/\*.c) */
 | 
			
		||||
#define SDL_AUDIO_DRIVER_DUMMY  1
 | 
			
		||||
 | 
			
		||||
/* Enable the stub joystick driver (src/joystick/dummy/\*.c) */
 | 
			
		||||
#define SDL_JOYSTICK_DISABLED   1
 | 
			
		||||
 | 
			
		||||
/* Enable the stub haptic driver (src/haptic/dummy/\*.c) */
 | 
			
		||||
#define SDL_HAPTIC_DISABLED 1
 | 
			
		||||
 | 
			
		||||
/* Enable the stub shared object loader (src/loadso/dummy/\*.c) */
 | 
			
		||||
#define SDL_LOADSO_DISABLED 1
 | 
			
		||||
 | 
			
		||||
/* Enable the stub thread support (src/thread/generic/\*.c) */
 | 
			
		||||
#define SDL_THREADS_DISABLED    1
 | 
			
		||||
 | 
			
		||||
/* Enable the stub timer support (src/timer/dummy/\*.c) */
 | 
			
		||||
#define SDL_TIMERS_DISABLED 1
 | 
			
		||||
 | 
			
		||||
/* Enable the dummy video driver (src/video/dummy/\*.c) */
 | 
			
		||||
#define SDL_VIDEO_DRIVER_DUMMY  1
 | 
			
		||||
 | 
			
		||||
/* Enable the dummy filesystem driver (src/filesystem/dummy/\*.c) */
 | 
			
		||||
#define SDL_FILESYSTEM_DUMMY  1
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_config_minimal_h */
 | 
			
		||||
@ -0,0 +1,127 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_config_h
 | 
			
		||||
#define _SDL_config_h
 | 
			
		||||
 | 
			
		||||
/* This is a set of defines to configure the SDL features */
 | 
			
		||||
 | 
			
		||||
/* General platform specific identifiers */
 | 
			
		||||
#include "SDL_platform.h"
 | 
			
		||||
 | 
			
		||||
#ifdef __LP64__
 | 
			
		||||
#define SIZEOF_VOIDP 8
 | 
			
		||||
#else
 | 
			
		||||
#define SIZEOF_VOIDP 4
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define SDL_BYTEORDER 1234
 | 
			
		||||
 | 
			
		||||
#define HAVE_ALLOCA_H 1
 | 
			
		||||
#define HAVE_SYS_TYPES_H 1
 | 
			
		||||
#define HAVE_STDIO_H 1
 | 
			
		||||
#define STDC_HEADERS 1
 | 
			
		||||
#define HAVE_STDLIB_H 1
 | 
			
		||||
#define HAVE_STDARG_H 1
 | 
			
		||||
#define HAVE_MALLOC_H 1
 | 
			
		||||
#define HAVE_MEMORY_H 1
 | 
			
		||||
#define HAVE_STRING_H 1
 | 
			
		||||
#define HAVE_STRINGS_H 1
 | 
			
		||||
#define HAVE_INTTYPES_H 1
 | 
			
		||||
#define HAVE_STDINT_H 1
 | 
			
		||||
#define HAVE_CTYPE_H 1
 | 
			
		||||
#define HAVE_MATH_H 1
 | 
			
		||||
#define HAVE_ICONV_H 1
 | 
			
		||||
#define HAVE_SIGNAL_H 1
 | 
			
		||||
#define HAVE_MALLOC 1
 | 
			
		||||
#define HAVE_CALLOC 1
 | 
			
		||||
#define HAVE_REALLOC 1
 | 
			
		||||
#define HAVE_FREE 1
 | 
			
		||||
#define HAVE_ALLOCA 1
 | 
			
		||||
#define HAVE_GETENV 1
 | 
			
		||||
#define HAVE_SETENV 1
 | 
			
		||||
#define HAVE_PUTENV 1
 | 
			
		||||
#define HAVE_UNSETENV 1
 | 
			
		||||
#define HAVE_QSORT 1
 | 
			
		||||
#define HAVE_ABS 1
 | 
			
		||||
#define HAVE_BCOPY 1
 | 
			
		||||
#define HAVE_MEMSET 1
 | 
			
		||||
#define HAVE_MEMCPY 1
 | 
			
		||||
#define HAVE_MEMMOVE 1
 | 
			
		||||
#define HAVE_STRLEN 1
 | 
			
		||||
#define HAVE_STRDUP 1
 | 
			
		||||
#define HAVE_STRCHR 1
 | 
			
		||||
#define HAVE_STRRCHR 1
 | 
			
		||||
#define HAVE_STRSTR 1
 | 
			
		||||
#define HAVE_STRTOL 1
 | 
			
		||||
#define HAVE_STRTOUL 1
 | 
			
		||||
#define HAVE_STRTOLL 1
 | 
			
		||||
#define HAVE_STRTOULL 1
 | 
			
		||||
#define HAVE_ATOI 1
 | 
			
		||||
#define HAVE_ATOF 1
 | 
			
		||||
#define HAVE_STRCMP 1
 | 
			
		||||
#define HAVE_STRNCMP 1
 | 
			
		||||
#define HAVE_STRCASECMP 1
 | 
			
		||||
#define HAVE_STRNCASECMP 1
 | 
			
		||||
#define HAVE_VSSCANF 1
 | 
			
		||||
#define HAVE_VSNPRINTF 1
 | 
			
		||||
#define HAVE_M_PI 1
 | 
			
		||||
#define HAVE_CEIL 1
 | 
			
		||||
#define HAVE_COPYSIGN 1
 | 
			
		||||
#define HAVE_COS 1
 | 
			
		||||
#define HAVE_COSF 1
 | 
			
		||||
#define HAVE_FABS 1
 | 
			
		||||
#define HAVE_FLOOR 1
 | 
			
		||||
#define HAVE_LOG 1
 | 
			
		||||
#define HAVE_SCALBN 1
 | 
			
		||||
#define HAVE_SIN 1
 | 
			
		||||
#define HAVE_SINF 1
 | 
			
		||||
#define HAVE_SQRT 1
 | 
			
		||||
#define HAVE_SQRTF 1
 | 
			
		||||
#define HAVE_TAN 1
 | 
			
		||||
#define HAVE_TANF 1
 | 
			
		||||
#define HAVE_SIGACTION 1
 | 
			
		||||
#define HAVE_SETJMP 1
 | 
			
		||||
#define HAVE_NANOSLEEP 1
 | 
			
		||||
 | 
			
		||||
#define SDL_AUDIO_DRIVER_DUMMY 1
 | 
			
		||||
#define SDL_AUDIO_DRIVER_OSS 1
 | 
			
		||||
 | 
			
		||||
#define SDL_INPUT_LINUXEV 1
 | 
			
		||||
#define SDL_INPUT_TSLIB 1
 | 
			
		||||
#define SDL_JOYSTICK_LINUX 1
 | 
			
		||||
#define SDL_HAPTIC_LINUX 1
 | 
			
		||||
 | 
			
		||||
#define SDL_LOADSO_DLOPEN 1
 | 
			
		||||
 | 
			
		||||
#define SDL_THREAD_PTHREAD 1
 | 
			
		||||
#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP 1
 | 
			
		||||
 | 
			
		||||
#define SDL_TIMER_UNIX 1
 | 
			
		||||
#define SDL_FILESYSTEM_UNIX 1
 | 
			
		||||
 | 
			
		||||
#define SDL_VIDEO_DRIVER_DUMMY 1
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11 1
 | 
			
		||||
#define SDL_VIDEO_DRIVER_PANDORA 1
 | 
			
		||||
#define SDL_VIDEO_RENDER_OGL_ES 1
 | 
			
		||||
#define SDL_VIDEO_OPENGL_ES 1
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_config_h */
 | 
			
		||||
							
								
								
									
										143
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_config_psp.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										143
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_config_psp.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,143 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_config_psp_h
 | 
			
		||||
#define _SDL_config_psp_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_platform.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef __GNUC__
 | 
			
		||||
#define HAVE_GCC_SYNC_LOCK_TEST_AND_SET 1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define HAVE_GCC_ATOMICS    1
 | 
			
		||||
 | 
			
		||||
#define HAVE_ALLOCA_H       1
 | 
			
		||||
#define HAVE_SYS_TYPES_H    1
 | 
			
		||||
#define HAVE_STDIO_H    1
 | 
			
		||||
#define STDC_HEADERS    1
 | 
			
		||||
#define HAVE_STRING_H   1
 | 
			
		||||
#define HAVE_INTTYPES_H 1
 | 
			
		||||
#define HAVE_STDINT_H   1
 | 
			
		||||
#define HAVE_CTYPE_H    1
 | 
			
		||||
#define HAVE_MATH_H 1
 | 
			
		||||
#define HAVE_SIGNAL_H   1
 | 
			
		||||
 | 
			
		||||
/* C library functions */
 | 
			
		||||
#define HAVE_MALLOC 1
 | 
			
		||||
#define HAVE_CALLOC 1
 | 
			
		||||
#define HAVE_REALLOC    1
 | 
			
		||||
#define HAVE_FREE   1
 | 
			
		||||
#define HAVE_ALLOCA 1
 | 
			
		||||
#define HAVE_GETENV 1
 | 
			
		||||
#define HAVE_SETENV 1
 | 
			
		||||
#define HAVE_PUTENV 1
 | 
			
		||||
#define HAVE_SETENV 1
 | 
			
		||||
#define HAVE_UNSETENV   1
 | 
			
		||||
#define HAVE_QSORT  1
 | 
			
		||||
#define HAVE_ABS    1
 | 
			
		||||
#define HAVE_BCOPY  1
 | 
			
		||||
#define HAVE_MEMSET 1
 | 
			
		||||
#define HAVE_MEMCPY 1
 | 
			
		||||
#define HAVE_MEMMOVE    1
 | 
			
		||||
#define HAVE_MEMCMP 1
 | 
			
		||||
#define HAVE_STRLEN 1
 | 
			
		||||
#define HAVE_STRLCPY    1
 | 
			
		||||
#define HAVE_STRLCAT    1
 | 
			
		||||
#define HAVE_STRDUP 1
 | 
			
		||||
#define HAVE_STRCHR 1
 | 
			
		||||
#define HAVE_STRRCHR    1
 | 
			
		||||
#define HAVE_STRSTR 1
 | 
			
		||||
#define HAVE_STRTOL 1
 | 
			
		||||
#define HAVE_STRTOUL    1
 | 
			
		||||
#define HAVE_STRTOLL    1
 | 
			
		||||
#define HAVE_STRTOULL   1
 | 
			
		||||
#define HAVE_STRTOD 1
 | 
			
		||||
#define HAVE_ATOI   1
 | 
			
		||||
#define HAVE_ATOF   1
 | 
			
		||||
#define HAVE_STRCMP 1
 | 
			
		||||
#define HAVE_STRNCMP    1
 | 
			
		||||
#define HAVE_STRCASECMP 1
 | 
			
		||||
#define HAVE_STRNCASECMP 1
 | 
			
		||||
#define HAVE_VSSCANF 1
 | 
			
		||||
#define HAVE_VSNPRINTF  1
 | 
			
		||||
#define HAVE_M_PI   1
 | 
			
		||||
#define HAVE_ATAN   1
 | 
			
		||||
#define HAVE_ATAN2  1
 | 
			
		||||
#define HAVE_ACOS  1
 | 
			
		||||
#define HAVE_ASIN  1
 | 
			
		||||
#define HAVE_CEIL   1
 | 
			
		||||
#define HAVE_COPYSIGN   1
 | 
			
		||||
#define HAVE_COS    1
 | 
			
		||||
#define HAVE_COSF   1
 | 
			
		||||
#define HAVE_FABS   1
 | 
			
		||||
#define HAVE_FLOOR  1
 | 
			
		||||
#define HAVE_LOG    1
 | 
			
		||||
#define HAVE_POW    1
 | 
			
		||||
#define HAVE_SCALBN 1
 | 
			
		||||
#define HAVE_SIN    1
 | 
			
		||||
#define HAVE_SINF   1
 | 
			
		||||
#define HAVE_SQRT   1
 | 
			
		||||
#define HAVE_SQRTF  1
 | 
			
		||||
#define HAVE_TAN    1
 | 
			
		||||
#define HAVE_TANF   1
 | 
			
		||||
#define HAVE_SETJMP 1
 | 
			
		||||
#define HAVE_NANOSLEEP  1
 | 
			
		||||
/* #define HAVE_SYSCONF  1 */
 | 
			
		||||
/* #define HAVE_SIGACTION    1 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* PSP isn't that sophisticated */
 | 
			
		||||
#define LACKS_SYS_MMAN_H 1
 | 
			
		||||
 | 
			
		||||
/* Enable the stub thread support (src/thread/psp/\*.c) */
 | 
			
		||||
#define SDL_THREAD_PSP  1
 | 
			
		||||
 | 
			
		||||
/* Enable the stub timer support (src/timer/psp/\*.c) */
 | 
			
		||||
#define SDL_TIMERS_PSP  1
 | 
			
		||||
 | 
			
		||||
/* Enable the stub joystick driver (src/joystick/psp/\*.c) */
 | 
			
		||||
#define SDL_JOYSTICK_PSP        1
 | 
			
		||||
 | 
			
		||||
/* Enable the stub audio driver (src/audio/psp/\*.c) */
 | 
			
		||||
#define SDL_AUDIO_DRIVER_PSP    1
 | 
			
		||||
 | 
			
		||||
/* PSP video dirver */
 | 
			
		||||
#define SDL_VIDEO_DRIVER_PSP   1
 | 
			
		||||
 | 
			
		||||
/* PSP render dirver */
 | 
			
		||||
#define SDL_VIDEO_RENDER_PSP   1
 | 
			
		||||
 | 
			
		||||
#define SDL_POWER_PSP          1
 | 
			
		||||
 | 
			
		||||
/* !!! FIXME: what does PSP do for filesystem stuff? */
 | 
			
		||||
#define SDL_FILESYSTEM_DUMMY   1
 | 
			
		||||
 | 
			
		||||
/* PSP doesn't have haptic device (src/haptic/dummy/\*.c) */
 | 
			
		||||
#define SDL_HAPTIC_DISABLED    1
 | 
			
		||||
 | 
			
		||||
/* PSP can't load shared object (src/loadso/dummy/\*.c) */
 | 
			
		||||
#define SDL_LOADSO_DISABLED    1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_config_psp_h */
 | 
			
		||||
@ -0,0 +1,221 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_config_windows_h
 | 
			
		||||
#define _SDL_config_windows_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_platform.h"
 | 
			
		||||
 | 
			
		||||
/* This is a set of defines to configure the SDL features */
 | 
			
		||||
 | 
			
		||||
#if !defined(_STDINT_H_) && (!defined(HAVE_STDINT_H) || !_HAVE_STDINT_H)
 | 
			
		||||
#if defined(__GNUC__) || defined(__DMC__) || defined(__WATCOMC__)
 | 
			
		||||
#define HAVE_STDINT_H   1
 | 
			
		||||
#elif defined(_MSC_VER)
 | 
			
		||||
typedef signed __int8 int8_t;
 | 
			
		||||
typedef unsigned __int8 uint8_t;
 | 
			
		||||
typedef signed __int16 int16_t;
 | 
			
		||||
typedef unsigned __int16 uint16_t;
 | 
			
		||||
typedef signed __int32 int32_t;
 | 
			
		||||
typedef unsigned __int32 uint32_t;
 | 
			
		||||
typedef signed __int64 int64_t;
 | 
			
		||||
typedef unsigned __int64 uint64_t;
 | 
			
		||||
#ifndef _UINTPTR_T_DEFINED
 | 
			
		||||
#ifdef  _WIN64
 | 
			
		||||
typedef unsigned __int64 uintptr_t;
 | 
			
		||||
#else
 | 
			
		||||
typedef unsigned int uintptr_t;
 | 
			
		||||
#endif
 | 
			
		||||
#define _UINTPTR_T_DEFINED
 | 
			
		||||
#endif
 | 
			
		||||
/* Older Visual C++ headers don't have the Win64-compatible typedefs... */
 | 
			
		||||
#if ((_MSC_VER <= 1200) && (!defined(DWORD_PTR)))
 | 
			
		||||
#define DWORD_PTR DWORD
 | 
			
		||||
#endif
 | 
			
		||||
#if ((_MSC_VER <= 1200) && (!defined(LONG_PTR)))
 | 
			
		||||
#define LONG_PTR LONG
 | 
			
		||||
#endif
 | 
			
		||||
#else /* !__GNUC__ && !_MSC_VER */
 | 
			
		||||
typedef signed char int8_t;
 | 
			
		||||
typedef unsigned char uint8_t;
 | 
			
		||||
typedef signed short int16_t;
 | 
			
		||||
typedef unsigned short uint16_t;
 | 
			
		||||
typedef signed int int32_t;
 | 
			
		||||
typedef unsigned int uint32_t;
 | 
			
		||||
typedef signed long long int64_t;
 | 
			
		||||
typedef unsigned long long uint64_t;
 | 
			
		||||
#ifndef _SIZE_T_DEFINED_
 | 
			
		||||
#define _SIZE_T_DEFINED_
 | 
			
		||||
typedef unsigned int size_t;
 | 
			
		||||
#endif
 | 
			
		||||
typedef unsigned int uintptr_t;
 | 
			
		||||
#endif /* __GNUC__ || _MSC_VER */
 | 
			
		||||
#endif /* !_STDINT_H_ && !HAVE_STDINT_H */
 | 
			
		||||
 | 
			
		||||
#ifdef _WIN64
 | 
			
		||||
# define SIZEOF_VOIDP 8
 | 
			
		||||
#else
 | 
			
		||||
# define SIZEOF_VOIDP 4
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define HAVE_DDRAW_H 1
 | 
			
		||||
#define HAVE_DINPUT_H 1
 | 
			
		||||
#define HAVE_DSOUND_H 1
 | 
			
		||||
#define HAVE_DXGI_H 1
 | 
			
		||||
#define HAVE_XINPUT_H 1
 | 
			
		||||
 | 
			
		||||
/* This is disabled by default to avoid C runtime dependencies and manifest requirements */
 | 
			
		||||
#ifdef HAVE_LIBC
 | 
			
		||||
/* Useful headers */
 | 
			
		||||
#define HAVE_STDIO_H 1
 | 
			
		||||
#define STDC_HEADERS 1
 | 
			
		||||
#define HAVE_STRING_H 1
 | 
			
		||||
#define HAVE_CTYPE_H 1
 | 
			
		||||
#define HAVE_MATH_H 1
 | 
			
		||||
#define HAVE_SIGNAL_H 1
 | 
			
		||||
 | 
			
		||||
/* C library functions */
 | 
			
		||||
#define HAVE_MALLOC 1
 | 
			
		||||
#define HAVE_CALLOC 1
 | 
			
		||||
#define HAVE_REALLOC 1
 | 
			
		||||
#define HAVE_FREE 1
 | 
			
		||||
#define HAVE_ALLOCA 1
 | 
			
		||||
#define HAVE_QSORT 1
 | 
			
		||||
#define HAVE_ABS 1
 | 
			
		||||
#define HAVE_MEMSET 1
 | 
			
		||||
#define HAVE_MEMCPY 1
 | 
			
		||||
#define HAVE_MEMMOVE 1
 | 
			
		||||
#define HAVE_MEMCMP 1
 | 
			
		||||
#define HAVE_STRLEN 1
 | 
			
		||||
#define HAVE__STRREV 1
 | 
			
		||||
#define HAVE__STRUPR 1
 | 
			
		||||
#define HAVE__STRLWR 1
 | 
			
		||||
#define HAVE_STRCHR 1
 | 
			
		||||
#define HAVE_STRRCHR 1
 | 
			
		||||
#define HAVE_STRSTR 1
 | 
			
		||||
#define HAVE__LTOA 1
 | 
			
		||||
#define HAVE__ULTOA 1
 | 
			
		||||
#define HAVE_STRTOL 1
 | 
			
		||||
#define HAVE_STRTOUL 1
 | 
			
		||||
#define HAVE_STRTOD 1
 | 
			
		||||
#define HAVE_ATOI 1
 | 
			
		||||
#define HAVE_ATOF 1
 | 
			
		||||
#define HAVE_STRCMP 1
 | 
			
		||||
#define HAVE_STRNCMP 1
 | 
			
		||||
#define HAVE__STRICMP 1
 | 
			
		||||
#define HAVE__STRNICMP 1
 | 
			
		||||
#define HAVE_ATAN 1
 | 
			
		||||
#define HAVE_ATAN2 1
 | 
			
		||||
#define HAVE_ACOS  1
 | 
			
		||||
#define HAVE_ASIN  1
 | 
			
		||||
#define HAVE_CEIL 1
 | 
			
		||||
#define HAVE_COS 1
 | 
			
		||||
#define HAVE_COSF 1
 | 
			
		||||
#define HAVE_FABS 1
 | 
			
		||||
#define HAVE_FLOOR 1
 | 
			
		||||
#define HAVE_LOG 1
 | 
			
		||||
#define HAVE_POW 1
 | 
			
		||||
#define HAVE_SIN 1
 | 
			
		||||
#define HAVE_SINF 1
 | 
			
		||||
#define HAVE_SQRT 1
 | 
			
		||||
#define HAVE_SQRTF 1
 | 
			
		||||
#define HAVE_TAN 1
 | 
			
		||||
#define HAVE_TANF 1
 | 
			
		||||
#if _MSC_VER >= 1800
 | 
			
		||||
#define HAVE_STRTOLL 1
 | 
			
		||||
#define HAVE_VSSCANF 1
 | 
			
		||||
#define HAVE_COPYSIGN 1
 | 
			
		||||
#define HAVE_SCALBN 1
 | 
			
		||||
#endif
 | 
			
		||||
#if !defined(_MSC_VER) || defined(_USE_MATH_DEFINES)
 | 
			
		||||
#define HAVE_M_PI 1
 | 
			
		||||
#endif
 | 
			
		||||
#else
 | 
			
		||||
#define HAVE_STDARG_H   1
 | 
			
		||||
#define HAVE_STDDEF_H   1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Enable various audio drivers */
 | 
			
		||||
#define SDL_AUDIO_DRIVER_DSOUND 1
 | 
			
		||||
#define SDL_AUDIO_DRIVER_XAUDIO2    1
 | 
			
		||||
#define SDL_AUDIO_DRIVER_WINMM  1
 | 
			
		||||
#define SDL_AUDIO_DRIVER_DISK   1
 | 
			
		||||
#define SDL_AUDIO_DRIVER_DUMMY  1
 | 
			
		||||
 | 
			
		||||
/* Enable various input drivers */
 | 
			
		||||
#define SDL_JOYSTICK_DINPUT 1
 | 
			
		||||
#define SDL_JOYSTICK_XINPUT 1
 | 
			
		||||
#define SDL_HAPTIC_DINPUT   1
 | 
			
		||||
#define SDL_HAPTIC_XINPUT   1
 | 
			
		||||
 | 
			
		||||
/* Enable various shared object loading systems */
 | 
			
		||||
#define SDL_LOADSO_WINDOWS  1
 | 
			
		||||
 | 
			
		||||
/* Enable various threading systems */
 | 
			
		||||
#define SDL_THREAD_WINDOWS  1
 | 
			
		||||
 | 
			
		||||
/* Enable various timer systems */
 | 
			
		||||
#define SDL_TIMER_WINDOWS   1
 | 
			
		||||
 | 
			
		||||
/* Enable various video drivers */
 | 
			
		||||
#define SDL_VIDEO_DRIVER_DUMMY  1
 | 
			
		||||
#define SDL_VIDEO_DRIVER_WINDOWS    1
 | 
			
		||||
 | 
			
		||||
#ifndef SDL_VIDEO_RENDER_D3D
 | 
			
		||||
#define SDL_VIDEO_RENDER_D3D    1
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef SDL_VIDEO_RENDER_D3D11
 | 
			
		||||
#define SDL_VIDEO_RENDER_D3D11	0
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Enable OpenGL support */
 | 
			
		||||
#ifndef SDL_VIDEO_OPENGL
 | 
			
		||||
#define SDL_VIDEO_OPENGL    1
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef SDL_VIDEO_OPENGL_WGL
 | 
			
		||||
#define SDL_VIDEO_OPENGL_WGL    1
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef SDL_VIDEO_RENDER_OGL
 | 
			
		||||
#define SDL_VIDEO_RENDER_OGL    1
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef SDL_VIDEO_RENDER_OGL_ES2
 | 
			
		||||
#define SDL_VIDEO_RENDER_OGL_ES2    1
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef SDL_VIDEO_OPENGL_ES2
 | 
			
		||||
#define SDL_VIDEO_OPENGL_ES2    1
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef SDL_VIDEO_OPENGL_EGL
 | 
			
		||||
#define SDL_VIDEO_OPENGL_EGL    1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Enable system power support */
 | 
			
		||||
#define SDL_POWER_WINDOWS 1
 | 
			
		||||
 | 
			
		||||
/* Enable filesystem support */
 | 
			
		||||
#define SDL_FILESYSTEM_WINDOWS  1
 | 
			
		||||
 | 
			
		||||
/* Enable assembly routines (Win64 doesn't have inline asm) */
 | 
			
		||||
#ifndef _WIN64
 | 
			
		||||
#define SDL_ASSEMBLY_ROUTINES   1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_config_windows_h */
 | 
			
		||||
							
								
								
									
										214
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_config_winrt.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										214
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_config_winrt.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,214 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_config_winrt_h
 | 
			
		||||
#define _SDL_config_winrt_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_platform.h"
 | 
			
		||||
 | 
			
		||||
/* Make sure the Windows SDK's NTDDI_VERSION macro gets defined.  This is used
 | 
			
		||||
   by SDL to determine which version of the Windows SDK is being used.
 | 
			
		||||
*/
 | 
			
		||||
#include <sdkddkver.h>
 | 
			
		||||
 | 
			
		||||
/* Define possibly-undefined NTDDI values (used when compiling SDL against
 | 
			
		||||
   older versions of the Windows SDK.
 | 
			
		||||
*/
 | 
			
		||||
#ifndef NTDDI_WINBLUE
 | 
			
		||||
#define NTDDI_WINBLUE 0x06030000
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef NTDDI_WIN10
 | 
			
		||||
#define NTDDI_WIN10 0x0A000000
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* This is a set of defines to configure the SDL features */
 | 
			
		||||
 | 
			
		||||
#if !defined(_STDINT_H_) && (!defined(HAVE_STDINT_H) || !_HAVE_STDINT_H)
 | 
			
		||||
#if defined(__GNUC__) || defined(__DMC__) || defined(__WATCOMC__)
 | 
			
		||||
#define HAVE_STDINT_H	1
 | 
			
		||||
#elif defined(_MSC_VER)
 | 
			
		||||
typedef signed __int8 int8_t;
 | 
			
		||||
typedef unsigned __int8 uint8_t;
 | 
			
		||||
typedef signed __int16 int16_t;
 | 
			
		||||
typedef unsigned __int16 uint16_t;
 | 
			
		||||
typedef signed __int32 int32_t;
 | 
			
		||||
typedef unsigned __int32 uint32_t;
 | 
			
		||||
typedef signed __int64 int64_t;
 | 
			
		||||
typedef unsigned __int64 uint64_t;
 | 
			
		||||
#ifndef _UINTPTR_T_DEFINED
 | 
			
		||||
#ifdef  _WIN64
 | 
			
		||||
typedef unsigned __int64 uintptr_t;
 | 
			
		||||
#else
 | 
			
		||||
typedef unsigned int uintptr_t;
 | 
			
		||||
#endif
 | 
			
		||||
#define _UINTPTR_T_DEFINED
 | 
			
		||||
#endif
 | 
			
		||||
/* Older Visual C++ headers don't have the Win64-compatible typedefs... */
 | 
			
		||||
#if ((_MSC_VER <= 1200) && (!defined(DWORD_PTR)))
 | 
			
		||||
#define DWORD_PTR DWORD
 | 
			
		||||
#endif
 | 
			
		||||
#if ((_MSC_VER <= 1200) && (!defined(LONG_PTR)))
 | 
			
		||||
#define LONG_PTR LONG
 | 
			
		||||
#endif
 | 
			
		||||
#else /* !__GNUC__ && !_MSC_VER */
 | 
			
		||||
typedef signed char int8_t;
 | 
			
		||||
typedef unsigned char uint8_t;
 | 
			
		||||
typedef signed short int16_t;
 | 
			
		||||
typedef unsigned short uint16_t;
 | 
			
		||||
typedef signed int int32_t;
 | 
			
		||||
typedef unsigned int uint32_t;
 | 
			
		||||
typedef signed long long int64_t;
 | 
			
		||||
typedef unsigned long long uint64_t;
 | 
			
		||||
#ifndef _SIZE_T_DEFINED_
 | 
			
		||||
#define _SIZE_T_DEFINED_
 | 
			
		||||
typedef unsigned int size_t;
 | 
			
		||||
#endif
 | 
			
		||||
typedef unsigned int uintptr_t;
 | 
			
		||||
#endif /* __GNUC__ || _MSC_VER */
 | 
			
		||||
#endif /* !_STDINT_H_ && !HAVE_STDINT_H */
 | 
			
		||||
 | 
			
		||||
#ifdef _WIN64
 | 
			
		||||
# define SIZEOF_VOIDP 8
 | 
			
		||||
#else
 | 
			
		||||
# define SIZEOF_VOIDP 4
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Useful headers */
 | 
			
		||||
#define HAVE_DXGI_H 1
 | 
			
		||||
#if WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP
 | 
			
		||||
#define HAVE_XINPUT_H 1
 | 
			
		||||
#endif
 | 
			
		||||
#define HAVE_LIBC 1
 | 
			
		||||
#define HAVE_STDIO_H 1
 | 
			
		||||
#define STDC_HEADERS 1
 | 
			
		||||
#define HAVE_STRING_H 1
 | 
			
		||||
#define HAVE_CTYPE_H 1
 | 
			
		||||
#define HAVE_MATH_H 1
 | 
			
		||||
#define HAVE_FLOAT_H 1
 | 
			
		||||
#define HAVE_SIGNAL_H 1
 | 
			
		||||
 | 
			
		||||
/* C library functions */
 | 
			
		||||
#define HAVE_MALLOC 1
 | 
			
		||||
#define HAVE_CALLOC 1
 | 
			
		||||
#define HAVE_REALLOC 1
 | 
			
		||||
#define HAVE_FREE 1
 | 
			
		||||
#define HAVE_ALLOCA 1
 | 
			
		||||
#define HAVE_QSORT 1
 | 
			
		||||
#define HAVE_ABS 1
 | 
			
		||||
#define HAVE_MEMSET 1
 | 
			
		||||
#define HAVE_MEMCPY 1
 | 
			
		||||
#define HAVE_MEMMOVE 1
 | 
			
		||||
#define HAVE_MEMCMP 1
 | 
			
		||||
#define HAVE_STRLEN 1
 | 
			
		||||
#define HAVE__STRREV 1
 | 
			
		||||
#define HAVE__STRUPR 1
 | 
			
		||||
//#define HAVE__STRLWR 1	// TODO, WinRT: consider using _strlwr_s instead
 | 
			
		||||
#define HAVE_STRCHR 1
 | 
			
		||||
#define HAVE_STRRCHR 1
 | 
			
		||||
#define HAVE_STRSTR 1
 | 
			
		||||
//#define HAVE_ITOA 1   // TODO, WinRT: consider using _itoa_s instead
 | 
			
		||||
//#define HAVE__LTOA 1	// TODO, WinRT: consider using _ltoa_s instead
 | 
			
		||||
//#define HAVE__ULTOA 1	// TODO, WinRT: consider using _ultoa_s instead
 | 
			
		||||
#define HAVE_STRTOL 1
 | 
			
		||||
#define HAVE_STRTOUL 1
 | 
			
		||||
//#define HAVE_STRTOLL 1
 | 
			
		||||
#define HAVE_STRTOD 1
 | 
			
		||||
#define HAVE_ATOI 1
 | 
			
		||||
#define HAVE_ATOF 1
 | 
			
		||||
#define HAVE_STRCMP 1
 | 
			
		||||
#define HAVE_STRNCMP 1
 | 
			
		||||
#define HAVE__STRICMP 1
 | 
			
		||||
#define HAVE__STRNICMP 1
 | 
			
		||||
#define HAVE_VSNPRINTF 1
 | 
			
		||||
//#define HAVE_SSCANF 1	// TODO, WinRT: consider using sscanf_s instead
 | 
			
		||||
#define HAVE_M_PI 1
 | 
			
		||||
#define HAVE_ATAN 1
 | 
			
		||||
#define HAVE_ATAN2 1
 | 
			
		||||
#define HAVE_CEIL 1
 | 
			
		||||
#define HAVE__COPYSIGN 1
 | 
			
		||||
#define HAVE_COS 1
 | 
			
		||||
#define HAVE_COSF 1
 | 
			
		||||
#define HAVE_FABS 1
 | 
			
		||||
#define HAVE_FLOOR 1
 | 
			
		||||
#define HAVE_LOG 1
 | 
			
		||||
#define HAVE_POW 1
 | 
			
		||||
//#define HAVE_SCALBN 1
 | 
			
		||||
#define HAVE__SCALB 1
 | 
			
		||||
#define HAVE_SIN 1
 | 
			
		||||
#define HAVE_SINF 1
 | 
			
		||||
#define HAVE_SQRT 1
 | 
			
		||||
#define HAVE_SQRTF 1
 | 
			
		||||
#define HAVE_TAN 1
 | 
			
		||||
#define HAVE_TANF 1
 | 
			
		||||
#define HAVE__FSEEKI64 1
 | 
			
		||||
 | 
			
		||||
/* Enable various audio drivers */
 | 
			
		||||
#define SDL_AUDIO_DRIVER_XAUDIO2	1
 | 
			
		||||
#define SDL_AUDIO_DRIVER_DISK	1
 | 
			
		||||
#define SDL_AUDIO_DRIVER_DUMMY	1
 | 
			
		||||
 | 
			
		||||
/* Enable various input drivers */
 | 
			
		||||
#if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
 | 
			
		||||
#define SDL_JOYSTICK_DISABLED 1
 | 
			
		||||
#define SDL_HAPTIC_DISABLED	1
 | 
			
		||||
#else
 | 
			
		||||
#define SDL_JOYSTICK_XINPUT 1
 | 
			
		||||
#define SDL_HAPTIC_XINPUT   1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Enable various shared object loading systems */
 | 
			
		||||
#define SDL_LOADSO_WINDOWS	1
 | 
			
		||||
 | 
			
		||||
/* Enable various threading systems */
 | 
			
		||||
#if (NTDDI_VERSION >= NTDDI_WINBLUE)
 | 
			
		||||
#define SDL_THREAD_WINDOWS  1
 | 
			
		||||
#else
 | 
			
		||||
/* WinRT on Windows 8.0 and Windows Phone 8.0 don't support CreateThread() */
 | 
			
		||||
#define SDL_THREAD_STDCPP   1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Enable various timer systems */
 | 
			
		||||
#define SDL_TIMER_WINDOWS	1
 | 
			
		||||
 | 
			
		||||
/* Enable various video drivers */
 | 
			
		||||
#define SDL_VIDEO_DRIVER_WINRT	1
 | 
			
		||||
#define SDL_VIDEO_DRIVER_DUMMY  1
 | 
			
		||||
 | 
			
		||||
/* Enable OpenGL ES 2.0 (via a modified ANGLE library) */
 | 
			
		||||
#define SDL_VIDEO_OPENGL_ES2 1
 | 
			
		||||
#define SDL_VIDEO_OPENGL_EGL 1
 | 
			
		||||
 | 
			
		||||
/* Enable appropriate renderer(s) */
 | 
			
		||||
#define SDL_VIDEO_RENDER_D3D11  1
 | 
			
		||||
 | 
			
		||||
#if SDL_VIDEO_OPENGL_ES2
 | 
			
		||||
#define SDL_VIDEO_RENDER_OGL_ES2 1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Enable system power support */
 | 
			
		||||
#define SDL_POWER_WINRT 1
 | 
			
		||||
 | 
			
		||||
/* Enable assembly routines (Win64 doesn't have inline asm) */
 | 
			
		||||
#ifndef _WIN64
 | 
			
		||||
#define SDL_ASSEMBLY_ROUTINES	1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_config_winrt_h */
 | 
			
		||||
							
								
								
									
										120
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_config_wiz.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										120
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_config_wiz.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,120 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_config_h
 | 
			
		||||
#define _SDL_config_h
 | 
			
		||||
 | 
			
		||||
/* This is a set of defines to configure the SDL features */
 | 
			
		||||
 | 
			
		||||
/* General platform specific identifiers */
 | 
			
		||||
#include "SDL_platform.h"
 | 
			
		||||
 | 
			
		||||
#define SDL_BYTEORDER 1234
 | 
			
		||||
 | 
			
		||||
#define HAVE_ALLOCA_H 1
 | 
			
		||||
#define HAVE_SYS_TYPES_H 1
 | 
			
		||||
#define HAVE_STDIO_H 1
 | 
			
		||||
#define STDC_HEADERS 1
 | 
			
		||||
#define HAVE_STDLIB_H 1
 | 
			
		||||
#define HAVE_STDARG_H 1
 | 
			
		||||
#define HAVE_MALLOC_H 1
 | 
			
		||||
#define HAVE_MEMORY_H 1
 | 
			
		||||
#define HAVE_STRING_H 1
 | 
			
		||||
#define HAVE_STRINGS_H 1
 | 
			
		||||
#define HAVE_INTTYPES_H 1
 | 
			
		||||
#define HAVE_STDINT_H 1
 | 
			
		||||
#define HAVE_CTYPE_H 1
 | 
			
		||||
#define HAVE_MATH_H 1
 | 
			
		||||
#define HAVE_ICONV_H 1
 | 
			
		||||
#define HAVE_SIGNAL_H 1
 | 
			
		||||
#define HAVE_MALLOC 1
 | 
			
		||||
#define HAVE_CALLOC 1
 | 
			
		||||
#define HAVE_REALLOC 1
 | 
			
		||||
#define HAVE_FREE 1
 | 
			
		||||
#define HAVE_ALLOCA 1
 | 
			
		||||
#define HAVE_GETENV 1
 | 
			
		||||
#define HAVE_SETENV 1
 | 
			
		||||
#define HAVE_PUTENV 1
 | 
			
		||||
#define HAVE_UNSETENV 1
 | 
			
		||||
#define HAVE_QSORT 1
 | 
			
		||||
#define HAVE_ABS 1
 | 
			
		||||
#define HAVE_BCOPY 1
 | 
			
		||||
#define HAVE_MEMSET 1
 | 
			
		||||
#define HAVE_MEMCPY 1
 | 
			
		||||
#define HAVE_MEMMOVE 1
 | 
			
		||||
#define HAVE_STRLEN 1
 | 
			
		||||
#define HAVE_STRDUP 1
 | 
			
		||||
#define HAVE_STRCHR 1
 | 
			
		||||
#define HAVE_STRRCHR 1
 | 
			
		||||
#define HAVE_STRSTR 1
 | 
			
		||||
#define HAVE_STRTOL 1
 | 
			
		||||
#define HAVE_STRTOUL 1
 | 
			
		||||
#define HAVE_STRTOLL 1
 | 
			
		||||
#define HAVE_STRTOULL 1
 | 
			
		||||
#define HAVE_ATOI 1
 | 
			
		||||
#define HAVE_ATOF 1
 | 
			
		||||
#define HAVE_STRCMP 1
 | 
			
		||||
#define HAVE_STRNCMP 1
 | 
			
		||||
#define HAVE_STRCASECMP 1
 | 
			
		||||
#define HAVE_STRNCASECMP 1
 | 
			
		||||
#define HAVE_VSSCANF 1
 | 
			
		||||
#define HAVE_VSNPRINTF 1
 | 
			
		||||
#define HAVE_M_PI 1
 | 
			
		||||
#define HAVE_CEIL 1
 | 
			
		||||
#define HAVE_COPYSIGN 1
 | 
			
		||||
#define HAVE_COS 1
 | 
			
		||||
#define HAVE_COSF 1
 | 
			
		||||
#define HAVE_FABS 1
 | 
			
		||||
#define HAVE_FLOOR 1
 | 
			
		||||
#define HAVE_LOG 1
 | 
			
		||||
#define HAVE_SCALBN 1
 | 
			
		||||
#define HAVE_SIN 1
 | 
			
		||||
#define HAVE_SINF 1
 | 
			
		||||
#define HAVE_SQRT 1
 | 
			
		||||
#define HAVE_SQRTF 1
 | 
			
		||||
#define HAVE_TAN 1
 | 
			
		||||
#define HAVE_TANF 1
 | 
			
		||||
#define HAVE_SIGACTION 1
 | 
			
		||||
#define HAVE_SETJMP 1
 | 
			
		||||
#define HAVE_NANOSLEEP 1
 | 
			
		||||
#define HAVE_POW 1
 | 
			
		||||
 | 
			
		||||
#define SDL_AUDIO_DRIVER_DUMMY 1
 | 
			
		||||
#define SDL_AUDIO_DRIVER_OSS 1
 | 
			
		||||
 | 
			
		||||
#define SDL_INPUT_LINUXEV 1
 | 
			
		||||
#define SDL_INPUT_TSLIB 1
 | 
			
		||||
#define SDL_JOYSTICK_LINUX 1
 | 
			
		||||
#define SDL_HAPTIC_LINUX 1
 | 
			
		||||
 | 
			
		||||
#define SDL_LOADSO_DLOPEN 1
 | 
			
		||||
 | 
			
		||||
#define SDL_THREAD_PTHREAD 1
 | 
			
		||||
#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP 1
 | 
			
		||||
 | 
			
		||||
#define SDL_TIMER_UNIX 1
 | 
			
		||||
 | 
			
		||||
#define SDL_VIDEO_DRIVER_DUMMY 1
 | 
			
		||||
#define SDL_VIDEO_DRIVER_PANDORA 1
 | 
			
		||||
#define SDL_VIDEO_RENDER_OGL_ES 1
 | 
			
		||||
#define SDL_VIDEO_OPENGL_ES 1
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_config_h */
 | 
			
		||||
							
								
								
									
										20
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_copying.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_copying.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,20 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
							
								
								
									
										161
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_cpuinfo.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										161
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_cpuinfo.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,161 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_cpuinfo.h
 | 
			
		||||
 *
 | 
			
		||||
 *  CPU feature detection for SDL.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_cpuinfo_h
 | 
			
		||||
#define _SDL_cpuinfo_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
 | 
			
		||||
/* Need to do this here because intrin.h has C++ code in it */
 | 
			
		||||
/* Visual Studio 2005 has a bug where intrin.h conflicts with winnt.h */
 | 
			
		||||
#if defined(_MSC_VER) && (_MSC_VER >= 1500) && (defined(_M_IX86) || defined(_M_X64))
 | 
			
		||||
#include <intrin.h>
 | 
			
		||||
#ifndef _WIN64
 | 
			
		||||
#define __MMX__
 | 
			
		||||
#define __3dNOW__
 | 
			
		||||
#endif
 | 
			
		||||
#define __SSE__
 | 
			
		||||
#define __SSE2__
 | 
			
		||||
#elif defined(__MINGW64_VERSION_MAJOR)
 | 
			
		||||
#include <intrin.h>
 | 
			
		||||
#else
 | 
			
		||||
#ifdef __ALTIVEC__
 | 
			
		||||
#if HAVE_ALTIVEC_H && !defined(__APPLE_ALTIVEC__)
 | 
			
		||||
#include <altivec.h>
 | 
			
		||||
#undef pixel
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef __MMX__
 | 
			
		||||
#include <mmintrin.h>
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef __3dNOW__
 | 
			
		||||
#include <mm3dnow.h>
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef __SSE__
 | 
			
		||||
#include <xmmintrin.h>
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef __SSE2__
 | 
			
		||||
#include <emmintrin.h>
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* This is a guess for the cacheline size used for padding.
 | 
			
		||||
 * Most x86 processors have a 64 byte cache line.
 | 
			
		||||
 * The 64-bit PowerPC processors have a 128 byte cache line.
 | 
			
		||||
 * We'll use the larger value to be generally safe.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_CACHELINE_SIZE  128
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns the number of CPU cores available.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_GetCPUCount(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns the L1 cache line size of the CPU
 | 
			
		||||
 *
 | 
			
		||||
 *  This is useful for determining multi-threaded structure padding
 | 
			
		||||
 *  or SIMD prefetch sizes.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_GetCPUCacheLineSize(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns true if the CPU has the RDTSC instruction.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasRDTSC(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns true if the CPU has AltiVec features.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasAltiVec(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns true if the CPU has MMX features.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasMMX(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns true if the CPU has 3DNow! features.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_Has3DNow(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns true if the CPU has SSE features.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns true if the CPU has SSE2 features.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE2(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns true if the CPU has SSE3 features.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE3(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns true if the CPU has SSE4.1 features.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE41(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns true if the CPU has SSE4.2 features.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE42(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns true if the CPU has AVX features.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns true if the CPU has AVX2 features.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX2(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns the amount of RAM configured in the system, in MB.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_GetSystemRAM(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_cpuinfo_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
							
								
								
									
										1673
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_egl.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1673
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_egl.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										239
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_endian.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										239
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_endian.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,239 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_endian.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Functions for reading and writing endian-specific values
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_endian_h
 | 
			
		||||
#define _SDL_endian_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name The two types of endianness
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
#define SDL_LIL_ENDIAN  1234
 | 
			
		||||
#define SDL_BIG_ENDIAN  4321
 | 
			
		||||
/* @} */
 | 
			
		||||
 | 
			
		||||
#ifndef SDL_BYTEORDER           /* Not defined in SDL_config.h? */
 | 
			
		||||
#ifdef __linux__
 | 
			
		||||
#include <endian.h>
 | 
			
		||||
#define SDL_BYTEORDER  __BYTE_ORDER
 | 
			
		||||
#else /* __linux__ */
 | 
			
		||||
#if defined(__hppa__) || \
 | 
			
		||||
    defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || \
 | 
			
		||||
    (defined(__MIPS__) && defined(__MISPEB__)) || \
 | 
			
		||||
    defined(__ppc__) || defined(__POWERPC__) || defined(_M_PPC) || \
 | 
			
		||||
    defined(__sparc__)
 | 
			
		||||
#define SDL_BYTEORDER   SDL_BIG_ENDIAN
 | 
			
		||||
#else
 | 
			
		||||
#define SDL_BYTEORDER   SDL_LIL_ENDIAN
 | 
			
		||||
#endif
 | 
			
		||||
#endif /* __linux__ */
 | 
			
		||||
#endif /* !SDL_BYTEORDER */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_endian.h
 | 
			
		||||
 */
 | 
			
		||||
#if defined(__GNUC__) && defined(__i386__) && \
 | 
			
		||||
   !(__GNUC__ == 2 && __GNUC_MINOR__ == 95 /* broken gcc version */)
 | 
			
		||||
SDL_FORCE_INLINE Uint16
 | 
			
		||||
SDL_Swap16(Uint16 x)
 | 
			
		||||
{
 | 
			
		||||
  __asm__("xchgb %b0,%h0": "=q"(x):"0"(x));
 | 
			
		||||
    return x;
 | 
			
		||||
}
 | 
			
		||||
#elif defined(__GNUC__) && defined(__x86_64__)
 | 
			
		||||
SDL_FORCE_INLINE Uint16
 | 
			
		||||
SDL_Swap16(Uint16 x)
 | 
			
		||||
{
 | 
			
		||||
  __asm__("xchgb %b0,%h0": "=Q"(x):"0"(x));
 | 
			
		||||
    return x;
 | 
			
		||||
}
 | 
			
		||||
#elif defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__))
 | 
			
		||||
SDL_FORCE_INLINE Uint16
 | 
			
		||||
SDL_Swap16(Uint16 x)
 | 
			
		||||
{
 | 
			
		||||
    int result;
 | 
			
		||||
 | 
			
		||||
  __asm__("rlwimi %0,%2,8,16,23": "=&r"(result):"0"(x >> 8), "r"(x));
 | 
			
		||||
    return (Uint16)result;
 | 
			
		||||
}
 | 
			
		||||
#elif defined(__GNUC__) && (defined(__M68000__) || defined(__M68020__)) && !defined(__mcoldfire__)
 | 
			
		||||
SDL_FORCE_INLINE Uint16
 | 
			
		||||
SDL_Swap16(Uint16 x)
 | 
			
		||||
{
 | 
			
		||||
  __asm__("rorw #8,%0": "=d"(x): "0"(x):"cc");
 | 
			
		||||
    return x;
 | 
			
		||||
}
 | 
			
		||||
#else
 | 
			
		||||
SDL_FORCE_INLINE Uint16
 | 
			
		||||
SDL_Swap16(Uint16 x)
 | 
			
		||||
{
 | 
			
		||||
    return SDL_static_cast(Uint16, ((x << 8) | (x >> 8)));
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(__GNUC__) && defined(__i386__)
 | 
			
		||||
SDL_FORCE_INLINE Uint32
 | 
			
		||||
SDL_Swap32(Uint32 x)
 | 
			
		||||
{
 | 
			
		||||
  __asm__("bswap %0": "=r"(x):"0"(x));
 | 
			
		||||
    return x;
 | 
			
		||||
}
 | 
			
		||||
#elif defined(__GNUC__) && defined(__x86_64__)
 | 
			
		||||
SDL_FORCE_INLINE Uint32
 | 
			
		||||
SDL_Swap32(Uint32 x)
 | 
			
		||||
{
 | 
			
		||||
  __asm__("bswapl %0": "=r"(x):"0"(x));
 | 
			
		||||
    return x;
 | 
			
		||||
}
 | 
			
		||||
#elif defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__))
 | 
			
		||||
SDL_FORCE_INLINE Uint32
 | 
			
		||||
SDL_Swap32(Uint32 x)
 | 
			
		||||
{
 | 
			
		||||
    Uint32 result;
 | 
			
		||||
 | 
			
		||||
  __asm__("rlwimi %0,%2,24,16,23": "=&r"(result):"0"(x >> 24), "r"(x));
 | 
			
		||||
  __asm__("rlwimi %0,%2,8,8,15": "=&r"(result):"0"(result), "r"(x));
 | 
			
		||||
  __asm__("rlwimi %0,%2,24,0,7": "=&r"(result):"0"(result), "r"(x));
 | 
			
		||||
    return result;
 | 
			
		||||
}
 | 
			
		||||
#elif defined(__GNUC__) && (defined(__M68000__) || defined(__M68020__)) && !defined(__mcoldfire__)
 | 
			
		||||
SDL_FORCE_INLINE Uint32
 | 
			
		||||
SDL_Swap32(Uint32 x)
 | 
			
		||||
{
 | 
			
		||||
  __asm__("rorw #8,%0\n\tswap %0\n\trorw #8,%0": "=d"(x): "0"(x):"cc");
 | 
			
		||||
    return x;
 | 
			
		||||
}
 | 
			
		||||
#else
 | 
			
		||||
SDL_FORCE_INLINE Uint32
 | 
			
		||||
SDL_Swap32(Uint32 x)
 | 
			
		||||
{
 | 
			
		||||
    return SDL_static_cast(Uint32, ((x << 24) | ((x << 8) & 0x00FF0000) |
 | 
			
		||||
                                    ((x >> 8) & 0x0000FF00) | (x >> 24)));
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(__GNUC__) && defined(__i386__)
 | 
			
		||||
SDL_FORCE_INLINE Uint64
 | 
			
		||||
SDL_Swap64(Uint64 x)
 | 
			
		||||
{
 | 
			
		||||
    union
 | 
			
		||||
    {
 | 
			
		||||
        struct
 | 
			
		||||
        {
 | 
			
		||||
            Uint32 a, b;
 | 
			
		||||
        } s;
 | 
			
		||||
        Uint64 u;
 | 
			
		||||
    } v;
 | 
			
		||||
    v.u = x;
 | 
			
		||||
  __asm__("bswapl %0 ; bswapl %1 ; xchgl %0,%1": "=r"(v.s.a), "=r"(v.s.b):"0"(v.s.a),
 | 
			
		||||
            "1"(v.s.
 | 
			
		||||
                b));
 | 
			
		||||
    return v.u;
 | 
			
		||||
}
 | 
			
		||||
#elif defined(__GNUC__) && defined(__x86_64__)
 | 
			
		||||
SDL_FORCE_INLINE Uint64
 | 
			
		||||
SDL_Swap64(Uint64 x)
 | 
			
		||||
{
 | 
			
		||||
  __asm__("bswapq %0": "=r"(x):"0"(x));
 | 
			
		||||
    return x;
 | 
			
		||||
}
 | 
			
		||||
#else
 | 
			
		||||
SDL_FORCE_INLINE Uint64
 | 
			
		||||
SDL_Swap64(Uint64 x)
 | 
			
		||||
{
 | 
			
		||||
    Uint32 hi, lo;
 | 
			
		||||
 | 
			
		||||
    /* Separate into high and low 32-bit values and swap them */
 | 
			
		||||
    lo = SDL_static_cast(Uint32, x & 0xFFFFFFFF);
 | 
			
		||||
    x >>= 32;
 | 
			
		||||
    hi = SDL_static_cast(Uint32, x & 0xFFFFFFFF);
 | 
			
		||||
    x = SDL_Swap32(lo);
 | 
			
		||||
    x <<= 32;
 | 
			
		||||
    x |= SDL_Swap32(hi);
 | 
			
		||||
    return (x);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SDL_FORCE_INLINE float
 | 
			
		||||
SDL_SwapFloat(float x)
 | 
			
		||||
{
 | 
			
		||||
    union
 | 
			
		||||
    {
 | 
			
		||||
        float f;
 | 
			
		||||
        Uint32 ui32;
 | 
			
		||||
    } swapper;
 | 
			
		||||
    swapper.f = x;
 | 
			
		||||
    swapper.ui32 = SDL_Swap32(swapper.ui32);
 | 
			
		||||
    return swapper.f;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name Swap to native
 | 
			
		||||
 *  Byteswap item from the specified endianness to the native endianness.
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
#if SDL_BYTEORDER == SDL_LIL_ENDIAN
 | 
			
		||||
#define SDL_SwapLE16(X) (X)
 | 
			
		||||
#define SDL_SwapLE32(X) (X)
 | 
			
		||||
#define SDL_SwapLE64(X) (X)
 | 
			
		||||
#define SDL_SwapFloatLE(X)  (X)
 | 
			
		||||
#define SDL_SwapBE16(X) SDL_Swap16(X)
 | 
			
		||||
#define SDL_SwapBE32(X) SDL_Swap32(X)
 | 
			
		||||
#define SDL_SwapBE64(X) SDL_Swap64(X)
 | 
			
		||||
#define SDL_SwapFloatBE(X)  SDL_SwapFloat(X)
 | 
			
		||||
#else
 | 
			
		||||
#define SDL_SwapLE16(X) SDL_Swap16(X)
 | 
			
		||||
#define SDL_SwapLE32(X) SDL_Swap32(X)
 | 
			
		||||
#define SDL_SwapLE64(X) SDL_Swap64(X)
 | 
			
		||||
#define SDL_SwapFloatLE(X)  SDL_SwapFloat(X)
 | 
			
		||||
#define SDL_SwapBE16(X) (X)
 | 
			
		||||
#define SDL_SwapBE32(X) (X)
 | 
			
		||||
#define SDL_SwapBE64(X) (X)
 | 
			
		||||
#define SDL_SwapFloatBE(X)  (X)
 | 
			
		||||
#endif
 | 
			
		||||
/* @} *//* Swap to native */
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_endian_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
							
								
								
									
										76
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_error.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_error.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,76 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_error.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Simple error message routines for SDL.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_error_h
 | 
			
		||||
#define _SDL_error_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Public functions */
 | 
			
		||||
/* SDL_SetError() unconditionally returns -1. */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_SetError(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1);
 | 
			
		||||
extern DECLSPEC const char *SDLCALL SDL_GetError(void);
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_ClearError(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name Internal error functions
 | 
			
		||||
 *
 | 
			
		||||
 *  \internal
 | 
			
		||||
 *  Private error reporting function - used internally.
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
#define SDL_OutOfMemory()   SDL_Error(SDL_ENOMEM)
 | 
			
		||||
#define SDL_Unsupported()   SDL_Error(SDL_UNSUPPORTED)
 | 
			
		||||
#define SDL_InvalidParamError(param)    SDL_SetError("Parameter '%s' is invalid", (param))
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_ENOMEM,
 | 
			
		||||
    SDL_EFREAD,
 | 
			
		||||
    SDL_EFWRITE,
 | 
			
		||||
    SDL_EFSEEK,
 | 
			
		||||
    SDL_UNSUPPORTED,
 | 
			
		||||
    SDL_LASTERROR
 | 
			
		||||
} SDL_errorcode;
 | 
			
		||||
/* SDL_Error() unconditionally returns -1. */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_Error(SDL_errorcode code);
 | 
			
		||||
/* @} *//* Internal error functions */
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_error_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
							
								
								
									
										750
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_events.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										750
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_events.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,750 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_events.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Include file for SDL event handling.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_events_h
 | 
			
		||||
#define _SDL_events_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
#include "SDL_error.h"
 | 
			
		||||
#include "SDL_video.h"
 | 
			
		||||
#include "SDL_keyboard.h"
 | 
			
		||||
#include "SDL_mouse.h"
 | 
			
		||||
#include "SDL_joystick.h"
 | 
			
		||||
#include "SDL_gamecontroller.h"
 | 
			
		||||
#include "SDL_quit.h"
 | 
			
		||||
#include "SDL_gesture.h"
 | 
			
		||||
#include "SDL_touch.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* General keyboard/mouse state definitions */
 | 
			
		||||
#define SDL_RELEASED    0
 | 
			
		||||
#define SDL_PRESSED 1
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief The types of events that can be delivered.
 | 
			
		||||
 */
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_FIRSTEVENT     = 0,     /**< Unused (do not remove) */
 | 
			
		||||
 | 
			
		||||
    /* Application events */
 | 
			
		||||
    SDL_QUIT           = 0x100, /**< User-requested quit */
 | 
			
		||||
 | 
			
		||||
    /* These application events have special meaning on iOS, see README-ios.md for details */
 | 
			
		||||
    SDL_APP_TERMINATING,        /**< The application is being terminated by the OS
 | 
			
		||||
                                     Called on iOS in applicationWillTerminate()
 | 
			
		||||
                                     Called on Android in onDestroy()
 | 
			
		||||
                                */
 | 
			
		||||
    SDL_APP_LOWMEMORY,          /**< The application is low on memory, free memory if possible.
 | 
			
		||||
                                     Called on iOS in applicationDidReceiveMemoryWarning()
 | 
			
		||||
                                     Called on Android in onLowMemory()
 | 
			
		||||
                                */
 | 
			
		||||
    SDL_APP_WILLENTERBACKGROUND, /**< The application is about to enter the background
 | 
			
		||||
                                     Called on iOS in applicationWillResignActive()
 | 
			
		||||
                                     Called on Android in onPause()
 | 
			
		||||
                                */
 | 
			
		||||
    SDL_APP_DIDENTERBACKGROUND, /**< The application did enter the background and may not get CPU for some time
 | 
			
		||||
                                     Called on iOS in applicationDidEnterBackground()
 | 
			
		||||
                                     Called on Android in onPause()
 | 
			
		||||
                                */
 | 
			
		||||
    SDL_APP_WILLENTERFOREGROUND, /**< The application is about to enter the foreground
 | 
			
		||||
                                     Called on iOS in applicationWillEnterForeground()
 | 
			
		||||
                                     Called on Android in onResume()
 | 
			
		||||
                                */
 | 
			
		||||
    SDL_APP_DIDENTERFOREGROUND, /**< The application is now interactive
 | 
			
		||||
                                     Called on iOS in applicationDidBecomeActive()
 | 
			
		||||
                                     Called on Android in onResume()
 | 
			
		||||
                                */
 | 
			
		||||
 | 
			
		||||
    /* Window events */
 | 
			
		||||
    SDL_WINDOWEVENT    = 0x200, /**< Window state change */
 | 
			
		||||
    SDL_SYSWMEVENT,             /**< System specific event */
 | 
			
		||||
 | 
			
		||||
    /* Keyboard events */
 | 
			
		||||
    SDL_KEYDOWN        = 0x300, /**< Key pressed */
 | 
			
		||||
    SDL_KEYUP,                  /**< Key released */
 | 
			
		||||
    SDL_TEXTEDITING,            /**< Keyboard text editing (composition) */
 | 
			
		||||
    SDL_TEXTINPUT,              /**< Keyboard text input */
 | 
			
		||||
    SDL_KEYMAPCHANGED,          /**< Keymap changed due to a system event such as an
 | 
			
		||||
                                     input language or keyboard layout change.
 | 
			
		||||
                                */
 | 
			
		||||
 | 
			
		||||
    /* Mouse events */
 | 
			
		||||
    SDL_MOUSEMOTION    = 0x400, /**< Mouse moved */
 | 
			
		||||
    SDL_MOUSEBUTTONDOWN,        /**< Mouse button pressed */
 | 
			
		||||
    SDL_MOUSEBUTTONUP,          /**< Mouse button released */
 | 
			
		||||
    SDL_MOUSEWHEEL,             /**< Mouse wheel motion */
 | 
			
		||||
 | 
			
		||||
    /* Joystick events */
 | 
			
		||||
    SDL_JOYAXISMOTION  = 0x600, /**< Joystick axis motion */
 | 
			
		||||
    SDL_JOYBALLMOTION,          /**< Joystick trackball motion */
 | 
			
		||||
    SDL_JOYHATMOTION,           /**< Joystick hat position change */
 | 
			
		||||
    SDL_JOYBUTTONDOWN,          /**< Joystick button pressed */
 | 
			
		||||
    SDL_JOYBUTTONUP,            /**< Joystick button released */
 | 
			
		||||
    SDL_JOYDEVICEADDED,         /**< A new joystick has been inserted into the system */
 | 
			
		||||
    SDL_JOYDEVICEREMOVED,       /**< An opened joystick has been removed */
 | 
			
		||||
 | 
			
		||||
    /* Game controller events */
 | 
			
		||||
    SDL_CONTROLLERAXISMOTION  = 0x650, /**< Game controller axis motion */
 | 
			
		||||
    SDL_CONTROLLERBUTTONDOWN,          /**< Game controller button pressed */
 | 
			
		||||
    SDL_CONTROLLERBUTTONUP,            /**< Game controller button released */
 | 
			
		||||
    SDL_CONTROLLERDEVICEADDED,         /**< A new Game controller has been inserted into the system */
 | 
			
		||||
    SDL_CONTROLLERDEVICEREMOVED,       /**< An opened Game controller has been removed */
 | 
			
		||||
    SDL_CONTROLLERDEVICEREMAPPED,      /**< The controller mapping was updated */
 | 
			
		||||
 | 
			
		||||
    /* Touch events */
 | 
			
		||||
    SDL_FINGERDOWN      = 0x700,
 | 
			
		||||
    SDL_FINGERUP,
 | 
			
		||||
    SDL_FINGERMOTION,
 | 
			
		||||
 | 
			
		||||
    /* Gesture events */
 | 
			
		||||
    SDL_DOLLARGESTURE   = 0x800,
 | 
			
		||||
    SDL_DOLLARRECORD,
 | 
			
		||||
    SDL_MULTIGESTURE,
 | 
			
		||||
 | 
			
		||||
    /* Clipboard events */
 | 
			
		||||
    SDL_CLIPBOARDUPDATE = 0x900, /**< The clipboard changed */
 | 
			
		||||
 | 
			
		||||
    /* Drag and drop events */
 | 
			
		||||
    SDL_DROPFILE        = 0x1000, /**< The system requests a file open */
 | 
			
		||||
 | 
			
		||||
    /* Audio hotplug events */
 | 
			
		||||
    SDL_AUDIODEVICEADDED = 0x1100, /**< A new audio device is available */
 | 
			
		||||
    SDL_AUDIODEVICEREMOVED,        /**< An audio device has been removed. */
 | 
			
		||||
 | 
			
		||||
    /* Render events */
 | 
			
		||||
    SDL_RENDER_TARGETS_RESET = 0x2000, /**< The render targets have been reset and their contents need to be updated */
 | 
			
		||||
    SDL_RENDER_DEVICE_RESET, /**< The device has been reset and all textures need to be recreated */
 | 
			
		||||
 | 
			
		||||
    /** Events ::SDL_USEREVENT through ::SDL_LASTEVENT are for your use,
 | 
			
		||||
     *  and should be allocated with SDL_RegisterEvents()
 | 
			
		||||
     */
 | 
			
		||||
    SDL_USEREVENT    = 0x8000,
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     *  This last event is only for bounding internal arrays
 | 
			
		||||
     */
 | 
			
		||||
    SDL_LASTEVENT    = 0xFFFF
 | 
			
		||||
} SDL_EventType;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Fields shared by every event
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_CommonEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
} SDL_CommonEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Window state change event data (event.window.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_WindowEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_WINDOWEVENT */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    Uint32 windowID;    /**< The associated window */
 | 
			
		||||
    Uint8 event;        /**< ::SDL_WindowEventID */
 | 
			
		||||
    Uint8 padding1;
 | 
			
		||||
    Uint8 padding2;
 | 
			
		||||
    Uint8 padding3;
 | 
			
		||||
    Sint32 data1;       /**< event dependent data */
 | 
			
		||||
    Sint32 data2;       /**< event dependent data */
 | 
			
		||||
} SDL_WindowEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Keyboard button event structure (event.key.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_KeyboardEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_KEYDOWN or ::SDL_KEYUP */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    Uint32 windowID;    /**< The window with keyboard focus, if any */
 | 
			
		||||
    Uint8 state;        /**< ::SDL_PRESSED or ::SDL_RELEASED */
 | 
			
		||||
    Uint8 repeat;       /**< Non-zero if this is a key repeat */
 | 
			
		||||
    Uint8 padding2;
 | 
			
		||||
    Uint8 padding3;
 | 
			
		||||
    SDL_Keysym keysym;  /**< The key that was pressed or released */
 | 
			
		||||
} SDL_KeyboardEvent;
 | 
			
		||||
 | 
			
		||||
#define SDL_TEXTEDITINGEVENT_TEXT_SIZE (32)
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Keyboard text editing event structure (event.edit.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_TextEditingEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;                                /**< ::SDL_TEXTEDITING */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    Uint32 windowID;                            /**< The window with keyboard focus, if any */
 | 
			
		||||
    char text[SDL_TEXTEDITINGEVENT_TEXT_SIZE];  /**< The editing text */
 | 
			
		||||
    Sint32 start;                               /**< The start cursor of selected editing text */
 | 
			
		||||
    Sint32 length;                              /**< The length of selected editing text */
 | 
			
		||||
} SDL_TextEditingEvent;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define SDL_TEXTINPUTEVENT_TEXT_SIZE (32)
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Keyboard text input event structure (event.text.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_TextInputEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;                              /**< ::SDL_TEXTINPUT */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    Uint32 windowID;                          /**< The window with keyboard focus, if any */
 | 
			
		||||
    char text[SDL_TEXTINPUTEVENT_TEXT_SIZE];  /**< The input text */
 | 
			
		||||
} SDL_TextInputEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Mouse motion event structure (event.motion.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_MouseMotionEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_MOUSEMOTION */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    Uint32 windowID;    /**< The window with mouse focus, if any */
 | 
			
		||||
    Uint32 which;       /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
 | 
			
		||||
    Uint32 state;       /**< The current button state */
 | 
			
		||||
    Sint32 x;           /**< X coordinate, relative to window */
 | 
			
		||||
    Sint32 y;           /**< Y coordinate, relative to window */
 | 
			
		||||
    Sint32 xrel;        /**< The relative motion in the X direction */
 | 
			
		||||
    Sint32 yrel;        /**< The relative motion in the Y direction */
 | 
			
		||||
} SDL_MouseMotionEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Mouse button event structure (event.button.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_MouseButtonEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_MOUSEBUTTONDOWN or ::SDL_MOUSEBUTTONUP */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    Uint32 windowID;    /**< The window with mouse focus, if any */
 | 
			
		||||
    Uint32 which;       /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
 | 
			
		||||
    Uint8 button;       /**< The mouse button index */
 | 
			
		||||
    Uint8 state;        /**< ::SDL_PRESSED or ::SDL_RELEASED */
 | 
			
		||||
    Uint8 clicks;       /**< 1 for single-click, 2 for double-click, etc. */
 | 
			
		||||
    Uint8 padding1;
 | 
			
		||||
    Sint32 x;           /**< X coordinate, relative to window */
 | 
			
		||||
    Sint32 y;           /**< Y coordinate, relative to window */
 | 
			
		||||
} SDL_MouseButtonEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Mouse wheel event structure (event.wheel.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_MouseWheelEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_MOUSEWHEEL */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    Uint32 windowID;    /**< The window with mouse focus, if any */
 | 
			
		||||
    Uint32 which;       /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
 | 
			
		||||
    Sint32 x;           /**< The amount scrolled horizontally, positive to the right and negative to the left */
 | 
			
		||||
    Sint32 y;           /**< The amount scrolled vertically, positive away from the user and negative toward the user */
 | 
			
		||||
    Uint32 direction;   /**< Set to one of the SDL_MOUSEWHEEL_* defines. When FLIPPED the values in X and Y will be opposite. Multiply by -1 to change them back */
 | 
			
		||||
} SDL_MouseWheelEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Joystick axis motion event structure (event.jaxis.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_JoyAxisEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_JOYAXISMOTION */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    SDL_JoystickID which; /**< The joystick instance id */
 | 
			
		||||
    Uint8 axis;         /**< The joystick axis index */
 | 
			
		||||
    Uint8 padding1;
 | 
			
		||||
    Uint8 padding2;
 | 
			
		||||
    Uint8 padding3;
 | 
			
		||||
    Sint16 value;       /**< The axis value (range: -32768 to 32767) */
 | 
			
		||||
    Uint16 padding4;
 | 
			
		||||
} SDL_JoyAxisEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Joystick trackball motion event structure (event.jball.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_JoyBallEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_JOYBALLMOTION */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    SDL_JoystickID which; /**< The joystick instance id */
 | 
			
		||||
    Uint8 ball;         /**< The joystick trackball index */
 | 
			
		||||
    Uint8 padding1;
 | 
			
		||||
    Uint8 padding2;
 | 
			
		||||
    Uint8 padding3;
 | 
			
		||||
    Sint16 xrel;        /**< The relative motion in the X direction */
 | 
			
		||||
    Sint16 yrel;        /**< The relative motion in the Y direction */
 | 
			
		||||
} SDL_JoyBallEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Joystick hat position change event structure (event.jhat.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_JoyHatEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_JOYHATMOTION */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    SDL_JoystickID which; /**< The joystick instance id */
 | 
			
		||||
    Uint8 hat;          /**< The joystick hat index */
 | 
			
		||||
    Uint8 value;        /**< The hat position value.
 | 
			
		||||
                         *   \sa ::SDL_HAT_LEFTUP ::SDL_HAT_UP ::SDL_HAT_RIGHTUP
 | 
			
		||||
                         *   \sa ::SDL_HAT_LEFT ::SDL_HAT_CENTERED ::SDL_HAT_RIGHT
 | 
			
		||||
                         *   \sa ::SDL_HAT_LEFTDOWN ::SDL_HAT_DOWN ::SDL_HAT_RIGHTDOWN
 | 
			
		||||
                         *
 | 
			
		||||
                         *   Note that zero means the POV is centered.
 | 
			
		||||
                         */
 | 
			
		||||
    Uint8 padding1;
 | 
			
		||||
    Uint8 padding2;
 | 
			
		||||
} SDL_JoyHatEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Joystick button event structure (event.jbutton.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_JoyButtonEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_JOYBUTTONDOWN or ::SDL_JOYBUTTONUP */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    SDL_JoystickID which; /**< The joystick instance id */
 | 
			
		||||
    Uint8 button;       /**< The joystick button index */
 | 
			
		||||
    Uint8 state;        /**< ::SDL_PRESSED or ::SDL_RELEASED */
 | 
			
		||||
    Uint8 padding1;
 | 
			
		||||
    Uint8 padding2;
 | 
			
		||||
} SDL_JoyButtonEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Joystick device event structure (event.jdevice.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_JoyDeviceEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_JOYDEVICEADDED or ::SDL_JOYDEVICEREMOVED */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    Sint32 which;       /**< The joystick device index for the ADDED event, instance id for the REMOVED event */
 | 
			
		||||
} SDL_JoyDeviceEvent;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Game controller axis motion event structure (event.caxis.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_ControllerAxisEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_CONTROLLERAXISMOTION */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    SDL_JoystickID which; /**< The joystick instance id */
 | 
			
		||||
    Uint8 axis;         /**< The controller axis (SDL_GameControllerAxis) */
 | 
			
		||||
    Uint8 padding1;
 | 
			
		||||
    Uint8 padding2;
 | 
			
		||||
    Uint8 padding3;
 | 
			
		||||
    Sint16 value;       /**< The axis value (range: -32768 to 32767) */
 | 
			
		||||
    Uint16 padding4;
 | 
			
		||||
} SDL_ControllerAxisEvent;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Game controller button event structure (event.cbutton.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_ControllerButtonEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_CONTROLLERBUTTONDOWN or ::SDL_CONTROLLERBUTTONUP */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    SDL_JoystickID which; /**< The joystick instance id */
 | 
			
		||||
    Uint8 button;       /**< The controller button (SDL_GameControllerButton) */
 | 
			
		||||
    Uint8 state;        /**< ::SDL_PRESSED or ::SDL_RELEASED */
 | 
			
		||||
    Uint8 padding1;
 | 
			
		||||
    Uint8 padding2;
 | 
			
		||||
} SDL_ControllerButtonEvent;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Controller device event structure (event.cdevice.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_ControllerDeviceEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_CONTROLLERDEVICEADDED, ::SDL_CONTROLLERDEVICEREMOVED, or ::SDL_CONTROLLERDEVICEREMAPPED */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    Sint32 which;       /**< The joystick device index for the ADDED event, instance id for the REMOVED or REMAPPED event */
 | 
			
		||||
} SDL_ControllerDeviceEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Audio device event structure (event.adevice.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_AudioDeviceEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_AUDIODEVICEADDED, or ::SDL_AUDIODEVICEREMOVED */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    Uint32 which;       /**< The audio device index for the ADDED event (valid until next SDL_GetNumAudioDevices() call), SDL_AudioDeviceID for the REMOVED event */
 | 
			
		||||
    Uint8 iscapture;    /**< zero if an output device, non-zero if a capture device. */
 | 
			
		||||
    Uint8 padding1;
 | 
			
		||||
    Uint8 padding2;
 | 
			
		||||
    Uint8 padding3;
 | 
			
		||||
} SDL_AudioDeviceEvent;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Touch finger event structure (event.tfinger.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_TouchFingerEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_FINGERMOTION or ::SDL_FINGERDOWN or ::SDL_FINGERUP */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    SDL_TouchID touchId; /**< The touch device id */
 | 
			
		||||
    SDL_FingerID fingerId;
 | 
			
		||||
    float x;            /**< Normalized in the range 0...1 */
 | 
			
		||||
    float y;            /**< Normalized in the range 0...1 */
 | 
			
		||||
    float dx;           /**< Normalized in the range -1...1 */
 | 
			
		||||
    float dy;           /**< Normalized in the range -1...1 */
 | 
			
		||||
    float pressure;     /**< Normalized in the range 0...1 */
 | 
			
		||||
} SDL_TouchFingerEvent;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Multiple Finger Gesture Event (event.mgesture.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_MultiGestureEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_MULTIGESTURE */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    SDL_TouchID touchId; /**< The touch device index */
 | 
			
		||||
    float dTheta;
 | 
			
		||||
    float dDist;
 | 
			
		||||
    float x;
 | 
			
		||||
    float y;
 | 
			
		||||
    Uint16 numFingers;
 | 
			
		||||
    Uint16 padding;
 | 
			
		||||
} SDL_MultiGestureEvent;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Dollar Gesture Event (event.dgesture.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_DollarGestureEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_DOLLARGESTURE or ::SDL_DOLLARRECORD */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    SDL_TouchID touchId; /**< The touch device id */
 | 
			
		||||
    SDL_GestureID gestureId;
 | 
			
		||||
    Uint32 numFingers;
 | 
			
		||||
    float error;
 | 
			
		||||
    float x;            /**< Normalized center of gesture */
 | 
			
		||||
    float y;            /**< Normalized center of gesture */
 | 
			
		||||
} SDL_DollarGestureEvent;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief An event used to request a file open by the system (event.drop.*)
 | 
			
		||||
 *         This event is enabled by default, you can disable it with SDL_EventState().
 | 
			
		||||
 *  \note If this event is enabled, you must free the filename in the event.
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_DropEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_DROPFILE */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    char *file;         /**< The file name, which should be freed with SDL_free() */
 | 
			
		||||
} SDL_DropEvent;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief The "quit requested" event
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_QuitEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_QUIT */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
} SDL_QuitEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief OS Specific event
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_OSEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_QUIT */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
} SDL_OSEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief A user-defined event type (event.user.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_UserEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_USEREVENT through ::SDL_LASTEVENT-1 */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    Uint32 windowID;    /**< The associated window if any */
 | 
			
		||||
    Sint32 code;        /**< User defined event code */
 | 
			
		||||
    void *data1;        /**< User defined data pointer */
 | 
			
		||||
    void *data2;        /**< User defined data pointer */
 | 
			
		||||
} SDL_UserEvent;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
struct SDL_SysWMmsg;
 | 
			
		||||
typedef struct SDL_SysWMmsg SDL_SysWMmsg;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief A video driver dependent system event (event.syswm.*)
 | 
			
		||||
 *         This event is disabled by default, you can enable it with SDL_EventState()
 | 
			
		||||
 *
 | 
			
		||||
 *  \note If you want to use this event, you should include SDL_syswm.h.
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_SysWMEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_SYSWMEVENT */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    SDL_SysWMmsg *msg;  /**< driver dependent data, defined in SDL_syswm.h */
 | 
			
		||||
} SDL_SysWMEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief General event structure
 | 
			
		||||
 */
 | 
			
		||||
typedef union SDL_Event
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;                    /**< Event type, shared with all events */
 | 
			
		||||
    SDL_CommonEvent common;         /**< Common event data */
 | 
			
		||||
    SDL_WindowEvent window;         /**< Window event data */
 | 
			
		||||
    SDL_KeyboardEvent key;          /**< Keyboard event data */
 | 
			
		||||
    SDL_TextEditingEvent edit;      /**< Text editing event data */
 | 
			
		||||
    SDL_TextInputEvent text;        /**< Text input event data */
 | 
			
		||||
    SDL_MouseMotionEvent motion;    /**< Mouse motion event data */
 | 
			
		||||
    SDL_MouseButtonEvent button;    /**< Mouse button event data */
 | 
			
		||||
    SDL_MouseWheelEvent wheel;      /**< Mouse wheel event data */
 | 
			
		||||
    SDL_JoyAxisEvent jaxis;         /**< Joystick axis event data */
 | 
			
		||||
    SDL_JoyBallEvent jball;         /**< Joystick ball event data */
 | 
			
		||||
    SDL_JoyHatEvent jhat;           /**< Joystick hat event data */
 | 
			
		||||
    SDL_JoyButtonEvent jbutton;     /**< Joystick button event data */
 | 
			
		||||
    SDL_JoyDeviceEvent jdevice;     /**< Joystick device change event data */
 | 
			
		||||
    SDL_ControllerAxisEvent caxis;      /**< Game Controller axis event data */
 | 
			
		||||
    SDL_ControllerButtonEvent cbutton;  /**< Game Controller button event data */
 | 
			
		||||
    SDL_ControllerDeviceEvent cdevice;  /**< Game Controller device event data */
 | 
			
		||||
    SDL_AudioDeviceEvent adevice;   /**< Audio device event data */
 | 
			
		||||
    SDL_QuitEvent quit;             /**< Quit request event data */
 | 
			
		||||
    SDL_UserEvent user;             /**< Custom event data */
 | 
			
		||||
    SDL_SysWMEvent syswm;           /**< System dependent window event data */
 | 
			
		||||
    SDL_TouchFingerEvent tfinger;   /**< Touch finger event data */
 | 
			
		||||
    SDL_MultiGestureEvent mgesture; /**< Gesture event data */
 | 
			
		||||
    SDL_DollarGestureEvent dgesture; /**< Gesture event data */
 | 
			
		||||
    SDL_DropEvent drop;             /**< Drag and drop event data */
 | 
			
		||||
 | 
			
		||||
    /* This is necessary for ABI compatibility between Visual C++ and GCC
 | 
			
		||||
       Visual C++ will respect the push pack pragma and use 52 bytes for
 | 
			
		||||
       this structure, and GCC will use the alignment of the largest datatype
 | 
			
		||||
       within the union, which is 8 bytes.
 | 
			
		||||
 | 
			
		||||
       So... we'll add padding to force the size to be 56 bytes for both.
 | 
			
		||||
    */
 | 
			
		||||
    Uint8 padding[56];
 | 
			
		||||
} SDL_Event;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Function prototypes */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Pumps the event loop, gathering events from the input devices.
 | 
			
		||||
 *
 | 
			
		||||
 *  This function updates the event queue and internal input device state.
 | 
			
		||||
 *
 | 
			
		||||
 *  This should only be run in the thread that sets the video mode.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_PumpEvents(void);
 | 
			
		||||
 | 
			
		||||
/* @{ */
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_ADDEVENT,
 | 
			
		||||
    SDL_PEEKEVENT,
 | 
			
		||||
    SDL_GETEVENT
 | 
			
		||||
} SDL_eventaction;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Checks the event queue for messages and optionally returns them.
 | 
			
		||||
 *
 | 
			
		||||
 *  If \c action is ::SDL_ADDEVENT, up to \c numevents events will be added to
 | 
			
		||||
 *  the back of the event queue.
 | 
			
		||||
 *
 | 
			
		||||
 *  If \c action is ::SDL_PEEKEVENT, up to \c numevents events at the front
 | 
			
		||||
 *  of the event queue, within the specified minimum and maximum type,
 | 
			
		||||
 *  will be returned and will not be removed from the queue.
 | 
			
		||||
 *
 | 
			
		||||
 *  If \c action is ::SDL_GETEVENT, up to \c numevents events at the front
 | 
			
		||||
 *  of the event queue, within the specified minimum and maximum type,
 | 
			
		||||
 *  will be returned and will be removed from the queue.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return The number of events actually stored, or -1 if there was an error.
 | 
			
		||||
 *
 | 
			
		||||
 *  This function is thread-safe.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_PeepEvents(SDL_Event * events, int numevents,
 | 
			
		||||
                                           SDL_eventaction action,
 | 
			
		||||
                                           Uint32 minType, Uint32 maxType);
 | 
			
		||||
/* @} */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Checks to see if certain event types are in the event queue.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasEvent(Uint32 type);
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasEvents(Uint32 minType, Uint32 maxType);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function clears events from the event queue
 | 
			
		||||
 *  This function only affects currently queued events. If you want to make
 | 
			
		||||
 *  sure that all pending OS events are flushed, you can call SDL_PumpEvents()
 | 
			
		||||
 *  on the main thread immediately before the flush call.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_FlushEvent(Uint32 type);
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_FlushEvents(Uint32 minType, Uint32 maxType);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Polls for currently pending events.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return 1 if there are any pending events, or 0 if there are none available.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param event If not NULL, the next event is removed from the queue and
 | 
			
		||||
 *               stored in that area.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_PollEvent(SDL_Event * event);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Waits indefinitely for the next available event.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return 1, or 0 if there was an error while waiting for events.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param event If not NULL, the next event is removed from the queue and
 | 
			
		||||
 *               stored in that area.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_WaitEvent(SDL_Event * event);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Waits until the specified timeout (in milliseconds) for the next
 | 
			
		||||
 *         available event.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return 1, or 0 if there was an error while waiting for events.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param event If not NULL, the next event is removed from the queue and
 | 
			
		||||
 *               stored in that area.
 | 
			
		||||
 *  \param timeout The timeout (in milliseconds) to wait for next event.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_WaitEventTimeout(SDL_Event * event,
 | 
			
		||||
                                                 int timeout);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Add an event to the event queue.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return 1 on success, 0 if the event was filtered, or -1 if the event queue
 | 
			
		||||
 *          was full or there was some other error.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_PushEvent(SDL_Event * event);
 | 
			
		||||
 | 
			
		||||
typedef int (SDLCALL * SDL_EventFilter) (void *userdata, SDL_Event * event);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Sets up a filter to process all events before they change internal state and
 | 
			
		||||
 *  are posted to the internal event queue.
 | 
			
		||||
 *
 | 
			
		||||
 *  The filter is prototyped as:
 | 
			
		||||
 *  \code
 | 
			
		||||
 *      int SDL_EventFilter(void *userdata, SDL_Event * event);
 | 
			
		||||
 *  \endcode
 | 
			
		||||
 *
 | 
			
		||||
 *  If the filter returns 1, then the event will be added to the internal queue.
 | 
			
		||||
 *  If it returns 0, then the event will be dropped from the queue, but the
 | 
			
		||||
 *  internal state will still be updated.  This allows selective filtering of
 | 
			
		||||
 *  dynamically arriving events.
 | 
			
		||||
 *
 | 
			
		||||
 *  \warning  Be very careful of what you do in the event filter function, as
 | 
			
		||||
 *            it may run in a different thread!
 | 
			
		||||
 *
 | 
			
		||||
 *  There is one caveat when dealing with the ::SDL_QuitEvent event type.  The
 | 
			
		||||
 *  event filter is only called when the window manager desires to close the
 | 
			
		||||
 *  application window.  If the event filter returns 1, then the window will
 | 
			
		||||
 *  be closed, otherwise the window will remain open if possible.
 | 
			
		||||
 *
 | 
			
		||||
 *  If the quit event is generated by an interrupt signal, it will bypass the
 | 
			
		||||
 *  internal queue and be delivered to the application at the next event poll.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_SetEventFilter(SDL_EventFilter filter,
 | 
			
		||||
                                                void *userdata);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Return the current event filter - can be used to "chain" filters.
 | 
			
		||||
 *  If there is no event filter set, this function returns SDL_FALSE.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_GetEventFilter(SDL_EventFilter * filter,
 | 
			
		||||
                                                    void **userdata);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Add a function which is called when an event is added to the queue.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_AddEventWatch(SDL_EventFilter filter,
 | 
			
		||||
                                               void *userdata);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Remove an event watch function added with SDL_AddEventWatch()
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_DelEventWatch(SDL_EventFilter filter,
 | 
			
		||||
                                               void *userdata);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Run the filter function on the current event queue, removing any
 | 
			
		||||
 *  events for which the filter returns 0.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_FilterEvents(SDL_EventFilter filter,
 | 
			
		||||
                                              void *userdata);
 | 
			
		||||
 | 
			
		||||
/* @{ */
 | 
			
		||||
#define SDL_QUERY   -1
 | 
			
		||||
#define SDL_IGNORE   0
 | 
			
		||||
#define SDL_DISABLE  0
 | 
			
		||||
#define SDL_ENABLE   1
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function allows you to set the state of processing certain events.
 | 
			
		||||
 *   - If \c state is set to ::SDL_IGNORE, that event will be automatically
 | 
			
		||||
 *     dropped from the event queue and will not event be filtered.
 | 
			
		||||
 *   - If \c state is set to ::SDL_ENABLE, that event will be processed
 | 
			
		||||
 *     normally.
 | 
			
		||||
 *   - If \c state is set to ::SDL_QUERY, SDL_EventState() will return the
 | 
			
		||||
 *     current processing state of the specified event.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC Uint8 SDLCALL SDL_EventState(Uint32 type, int state);
 | 
			
		||||
/* @} */
 | 
			
		||||
#define SDL_GetEventState(type) SDL_EventState(type, SDL_QUERY)
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function allocates a set of user-defined events, and returns
 | 
			
		||||
 *  the beginning event number for that set of events.
 | 
			
		||||
 *
 | 
			
		||||
 *  If there aren't enough user-defined events left, this function
 | 
			
		||||
 *  returns (Uint32)-1
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC Uint32 SDLCALL SDL_RegisterEvents(int numevents);
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_events_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
							
								
								
									
										136
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_filesystem.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										136
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_filesystem.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,136 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_filesystem.h
 | 
			
		||||
 *
 | 
			
		||||
 *  \brief Include file for filesystem SDL API functions
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_filesystem_h
 | 
			
		||||
#define _SDL_filesystem_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Get the path where the application resides.
 | 
			
		||||
 *
 | 
			
		||||
 * Get the "base path". This is the directory where the application was run
 | 
			
		||||
 *  from, which is probably the installation directory, and may or may not
 | 
			
		||||
 *  be the process's current working directory.
 | 
			
		||||
 *
 | 
			
		||||
 * This returns an absolute path in UTF-8 encoding, and is guaranteed to
 | 
			
		||||
 *  end with a path separator ('\\' on Windows, '/' most other places).
 | 
			
		||||
 *
 | 
			
		||||
 * The pointer returned by this function is owned by you. Please call
 | 
			
		||||
 *  SDL_free() on the pointer when you are done with it, or it will be a
 | 
			
		||||
 *  memory leak. This is not necessarily a fast call, though, so you should
 | 
			
		||||
 *  call this once near startup and save the string if you need it.
 | 
			
		||||
 *
 | 
			
		||||
 * Some platforms can't determine the application's path, and on other
 | 
			
		||||
 *  platforms, this might be meaningless. In such cases, this function will
 | 
			
		||||
 *  return NULL.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return String of base dir in UTF-8 encoding, or NULL on error.
 | 
			
		||||
 *
 | 
			
		||||
 * \sa SDL_GetPrefPath
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC char *SDLCALL SDL_GetBasePath(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Get the user-and-app-specific path where files can be written.
 | 
			
		||||
 *
 | 
			
		||||
 * Get the "pref dir". This is meant to be where users can write personal
 | 
			
		||||
 *  files (preferences and save games, etc) that are specific to your
 | 
			
		||||
 *  application. This directory is unique per user, per application.
 | 
			
		||||
 *
 | 
			
		||||
 * This function will decide the appropriate location in the native filesystem,
 | 
			
		||||
 *  create the directory if necessary, and return a string of the absolute
 | 
			
		||||
 *  path to the directory in UTF-8 encoding.
 | 
			
		||||
 *
 | 
			
		||||
 * On Windows, the string might look like:
 | 
			
		||||
 *  "C:\\Users\\bob\\AppData\\Roaming\\My Company\\My Program Name\\"
 | 
			
		||||
 *
 | 
			
		||||
 * On Linux, the string might look like:
 | 
			
		||||
 *  "/home/bob/.local/share/My Program Name/"
 | 
			
		||||
 *
 | 
			
		||||
 * On Mac OS X, the string might look like:
 | 
			
		||||
 *  "/Users/bob/Library/Application Support/My Program Name/"
 | 
			
		||||
 *
 | 
			
		||||
 * (etc.)
 | 
			
		||||
 *
 | 
			
		||||
 * You specify the name of your organization (if it's not a real organization,
 | 
			
		||||
 *  your name or an Internet domain you own might do) and the name of your
 | 
			
		||||
 *  application. These should be untranslated proper names.
 | 
			
		||||
 *
 | 
			
		||||
 * Both the org and app strings may become part of a directory name, so
 | 
			
		||||
 *  please follow these rules:
 | 
			
		||||
 *
 | 
			
		||||
 *    - Try to use the same org string (including case-sensitivity) for
 | 
			
		||||
 *      all your applications that use this function.
 | 
			
		||||
 *    - Always use a unique app string for each one, and make sure it never
 | 
			
		||||
 *      changes for an app once you've decided on it.
 | 
			
		||||
 *    - Unicode characters are legal, as long as it's UTF-8 encoded, but...
 | 
			
		||||
 *    - ...only use letters, numbers, and spaces. Avoid punctuation like
 | 
			
		||||
 *      "Game Name 2: Bad Guy's Revenge!" ... "Game Name 2" is sufficient.
 | 
			
		||||
 *
 | 
			
		||||
 * This returns an absolute path in UTF-8 encoding, and is guaranteed to
 | 
			
		||||
 *  end with a path separator ('\\' on Windows, '/' most other places).
 | 
			
		||||
 *
 | 
			
		||||
 * The pointer returned by this function is owned by you. Please call
 | 
			
		||||
 *  SDL_free() on the pointer when you are done with it, or it will be a
 | 
			
		||||
 *  memory leak. This is not necessarily a fast call, though, so you should
 | 
			
		||||
 *  call this once near startup and save the string if you need it.
 | 
			
		||||
 *
 | 
			
		||||
 * You should assume the path returned by this function is the only safe
 | 
			
		||||
 *  place to write files (and that SDL_GetBasePath(), while it might be
 | 
			
		||||
 *  writable, or even the parent of the returned path, aren't where you
 | 
			
		||||
 *  should be writing things).
 | 
			
		||||
 *
 | 
			
		||||
 * Some platforms can't determine the pref path, and on other
 | 
			
		||||
 *  platforms, this might be meaningless. In such cases, this function will
 | 
			
		||||
 *  return NULL.
 | 
			
		||||
 *
 | 
			
		||||
 *   \param org The name of your organization.
 | 
			
		||||
 *   \param app The name of your application.
 | 
			
		||||
 *  \return UTF-8 string of user dir in platform-dependent notation. NULL
 | 
			
		||||
 *          if there's a problem (creating directory failed, etc).
 | 
			
		||||
 *
 | 
			
		||||
 * \sa SDL_GetBasePath
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC char *SDLCALL SDL_GetPrefPath(const char *org, const char *app);
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_filesystem_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
@ -0,0 +1,323 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_gamecontroller.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Include file for SDL game controller event handling
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_gamecontroller_h
 | 
			
		||||
#define _SDL_gamecontroller_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
#include "SDL_error.h"
 | 
			
		||||
#include "SDL_rwops.h"
 | 
			
		||||
#include "SDL_joystick.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_gamecontroller.h
 | 
			
		||||
 *
 | 
			
		||||
 *  In order to use these functions, SDL_Init() must have been called
 | 
			
		||||
 *  with the ::SDL_INIT_GAMECONTROLLER flag.  This causes SDL to scan the system
 | 
			
		||||
 *  for game controllers, and load appropriate drivers.
 | 
			
		||||
 *
 | 
			
		||||
 *  If you would like to receive controller updates while the application
 | 
			
		||||
 *  is in the background, you should set the following hint before calling
 | 
			
		||||
 *  SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* The gamecontroller structure used to identify an SDL game controller */
 | 
			
		||||
struct _SDL_GameController;
 | 
			
		||||
typedef struct _SDL_GameController SDL_GameController;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_CONTROLLER_BINDTYPE_NONE = 0,
 | 
			
		||||
    SDL_CONTROLLER_BINDTYPE_BUTTON,
 | 
			
		||||
    SDL_CONTROLLER_BINDTYPE_AXIS,
 | 
			
		||||
    SDL_CONTROLLER_BINDTYPE_HAT
 | 
			
		||||
} SDL_GameControllerBindType;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the SDL joystick layer binding for this controller button/axis mapping
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_GameControllerButtonBind
 | 
			
		||||
{
 | 
			
		||||
    SDL_GameControllerBindType bindType;
 | 
			
		||||
    union
 | 
			
		||||
    {
 | 
			
		||||
        int button;
 | 
			
		||||
        int axis;
 | 
			
		||||
        struct {
 | 
			
		||||
            int hat;
 | 
			
		||||
            int hat_mask;
 | 
			
		||||
        } hat;
 | 
			
		||||
    } value;
 | 
			
		||||
 | 
			
		||||
} SDL_GameControllerButtonBind;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  To count the number of game controllers in the system for the following:
 | 
			
		||||
 *  int nJoysticks = SDL_NumJoysticks();
 | 
			
		||||
 *  int nGameControllers = 0;
 | 
			
		||||
 *  for ( int i = 0; i < nJoysticks; i++ ) {
 | 
			
		||||
 *      if ( SDL_IsGameController(i) ) {
 | 
			
		||||
 *          nGameControllers++;
 | 
			
		||||
 *      }
 | 
			
		||||
 *  }
 | 
			
		||||
 *
 | 
			
		||||
 *  Using the SDL_HINT_GAMECONTROLLERCONFIG hint or the SDL_GameControllerAddMapping you can add support for controllers SDL is unaware of or cause an existing controller to have a different binding. The format is:
 | 
			
		||||
 *  guid,name,mappings
 | 
			
		||||
 *
 | 
			
		||||
 *  Where GUID is the string value from SDL_JoystickGetGUIDString(), name is the human readable string for the device and mappings are controller mappings to joystick ones.
 | 
			
		||||
 *  Under Windows there is a reserved GUID of "xinput" that covers any XInput devices.
 | 
			
		||||
 *  The mapping format for joystick is:
 | 
			
		||||
 *      bX - a joystick button, index X
 | 
			
		||||
 *      hX.Y - hat X with value Y
 | 
			
		||||
 *      aX - axis X of the joystick
 | 
			
		||||
 *  Buttons can be used as a controller axis and vice versa.
 | 
			
		||||
 *
 | 
			
		||||
 *  This string shows an example of a valid mapping for a controller
 | 
			
		||||
 *  "341a3608000000000000504944564944,Afterglow PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7",
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Load a set of mappings from a seekable SDL data stream (memory or file), filtered by the current SDL_GetPlatform()
 | 
			
		||||
 *  A community sourced database of controllers is available at https://raw.github.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt
 | 
			
		||||
 *
 | 
			
		||||
 *  If \c freerw is non-zero, the stream will be closed after being read.
 | 
			
		||||
 * 
 | 
			
		||||
 * \return number of mappings added, -1 on error
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_GameControllerAddMappingsFromRW( SDL_RWops * rw, int freerw );
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Load a set of mappings from a file, filtered by the current SDL_GetPlatform()
 | 
			
		||||
 *
 | 
			
		||||
 *  Convenience macro.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_GameControllerAddMappingsFromFile(file)   SDL_GameControllerAddMappingsFromRW(SDL_RWFromFile(file, "rb"), 1)
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Add or update an existing mapping configuration
 | 
			
		||||
 *
 | 
			
		||||
 * \return 1 if mapping is added, 0 if updated, -1 on error
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_GameControllerAddMapping( const char* mappingString );
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get a mapping string for a GUID
 | 
			
		||||
 *
 | 
			
		||||
 *  \return the mapping string.  Must be freed with SDL_free.  Returns NULL if no mapping is available
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForGUID( SDL_JoystickGUID guid );
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get a mapping string for an open GameController
 | 
			
		||||
 *
 | 
			
		||||
 *  \return the mapping string.  Must be freed with SDL_free.  Returns NULL if no mapping is available
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC char * SDLCALL SDL_GameControllerMapping( SDL_GameController * gamecontroller );
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Is the joystick on this index supported by the game controller interface?
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_IsGameController(int joystick_index);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the implementation dependent name of a game controller.
 | 
			
		||||
 *  This can be called before any controllers are opened.
 | 
			
		||||
 *  If no name can be found, this function returns NULL.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC const char *SDLCALL SDL_GameControllerNameForIndex(int joystick_index);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Open a game controller for use.
 | 
			
		||||
 *  The index passed as an argument refers to the N'th game controller on the system.
 | 
			
		||||
 *  This index is not the value which will identify this controller in future
 | 
			
		||||
 *  controller events.  The joystick's instance id (::SDL_JoystickID) will be
 | 
			
		||||
 *  used there instead.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return A controller identifier, or NULL if an error occurred.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerOpen(int joystick_index);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Return the SDL_GameController associated with an instance id.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromInstanceID(SDL_JoystickID joyid);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Return the name for this currently opened controller
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC const char *SDLCALL SDL_GameControllerName(SDL_GameController *gamecontroller);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Returns SDL_TRUE if the controller has been opened and currently connected,
 | 
			
		||||
 *  or SDL_FALSE if it has not.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerGetAttached(SDL_GameController *gamecontroller);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the underlying joystick object used by a controller
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_Joystick *SDLCALL SDL_GameControllerGetJoystick(SDL_GameController *gamecontroller);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Enable/disable controller event polling.
 | 
			
		||||
 *
 | 
			
		||||
 *  If controller events are disabled, you must call SDL_GameControllerUpdate()
 | 
			
		||||
 *  yourself and check the state of the controller when you want controller
 | 
			
		||||
 *  information.
 | 
			
		||||
 *
 | 
			
		||||
 *  The state can be one of ::SDL_QUERY, ::SDL_ENABLE or ::SDL_IGNORE.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_GameControllerEventState(int state);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Update the current state of the open game controllers.
 | 
			
		||||
 *
 | 
			
		||||
 *  This is called automatically by the event loop if any game controller
 | 
			
		||||
 *  events are enabled.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_GameControllerUpdate(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  The list of axes available from a controller
 | 
			
		||||
 */
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_CONTROLLER_AXIS_INVALID = -1,
 | 
			
		||||
    SDL_CONTROLLER_AXIS_LEFTX,
 | 
			
		||||
    SDL_CONTROLLER_AXIS_LEFTY,
 | 
			
		||||
    SDL_CONTROLLER_AXIS_RIGHTX,
 | 
			
		||||
    SDL_CONTROLLER_AXIS_RIGHTY,
 | 
			
		||||
    SDL_CONTROLLER_AXIS_TRIGGERLEFT,
 | 
			
		||||
    SDL_CONTROLLER_AXIS_TRIGGERRIGHT,
 | 
			
		||||
    SDL_CONTROLLER_AXIS_MAX
 | 
			
		||||
} SDL_GameControllerAxis;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  turn this string into a axis mapping
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_GameControllerAxis SDLCALL SDL_GameControllerGetAxisFromString(const char *pchString);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  turn this axis enum into a string mapping
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForAxis(SDL_GameControllerAxis axis);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the SDL joystick layer binding for this controller button mapping
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_GameControllerButtonBind SDLCALL
 | 
			
		||||
SDL_GameControllerGetBindForAxis(SDL_GameController *gamecontroller,
 | 
			
		||||
                                 SDL_GameControllerAxis axis);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the current state of an axis control on a game controller.
 | 
			
		||||
 *
 | 
			
		||||
 *  The state is a value ranging from -32768 to 32767 (except for the triggers,
 | 
			
		||||
 *  which range from 0 to 32767).
 | 
			
		||||
 *
 | 
			
		||||
 *  The axis indices start at index 0.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC Sint16 SDLCALL
 | 
			
		||||
SDL_GameControllerGetAxis(SDL_GameController *gamecontroller,
 | 
			
		||||
                          SDL_GameControllerAxis axis);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  The list of buttons available from a controller
 | 
			
		||||
 */
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_INVALID = -1,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_A,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_B,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_X,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_Y,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_BACK,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_GUIDE,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_START,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_LEFTSTICK,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_RIGHTSTICK,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_LEFTSHOULDER,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_RIGHTSHOULDER,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_DPAD_UP,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_DPAD_DOWN,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_DPAD_LEFT,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_DPAD_RIGHT,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_MAX
 | 
			
		||||
} SDL_GameControllerButton;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  turn this string into a button mapping
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_GameControllerButton SDLCALL SDL_GameControllerGetButtonFromString(const char *pchString);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  turn this button enum into a string mapping
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForButton(SDL_GameControllerButton button);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the SDL joystick layer binding for this controller button mapping
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_GameControllerButtonBind SDLCALL
 | 
			
		||||
SDL_GameControllerGetBindForButton(SDL_GameController *gamecontroller,
 | 
			
		||||
                                   SDL_GameControllerButton button);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the current state of a button on a game controller.
 | 
			
		||||
 *
 | 
			
		||||
 *  The button indices start at index 0.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC Uint8 SDLCALL SDL_GameControllerGetButton(SDL_GameController *gamecontroller,
 | 
			
		||||
                                                          SDL_GameControllerButton button);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Close a controller previously opened with SDL_GameControllerOpen().
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_GameControllerClose(SDL_GameController *gamecontroller);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_gamecontroller_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
							
								
								
									
										87
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_gesture.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_gesture.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,87 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_gesture.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Include file for SDL gesture event handling.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_gesture_h
 | 
			
		||||
#define _SDL_gesture_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
#include "SDL_error.h"
 | 
			
		||||
#include "SDL_video.h"
 | 
			
		||||
 | 
			
		||||
#include "SDL_touch.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
typedef Sint64 SDL_GestureID;
 | 
			
		||||
 | 
			
		||||
/* Function prototypes */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Begin Recording a gesture on the specified touch, or all touches (-1)
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_RecordGesture(SDL_TouchID touchId);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Save all currently loaded Dollar Gesture templates
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_SaveAllDollarTemplates(SDL_RWops *dst);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Save a currently loaded Dollar Gesture template
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_SaveDollarTemplate(SDL_GestureID gestureId,SDL_RWops *dst);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Load Dollar Gesture templates from a file
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_LoadDollarTemplates(SDL_TouchID touchId, SDL_RWops *src);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_gesture_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
							
								
								
									
										1223
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_haptic.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1223
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_haptic.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										711
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_hints.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										711
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_hints.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,711 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_hints.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Official documentation for SDL configuration variables
 | 
			
		||||
 *
 | 
			
		||||
 *  This file contains functions to set and get configuration hints,
 | 
			
		||||
 *  as well as listing each of them alphabetically.
 | 
			
		||||
 *
 | 
			
		||||
 *  The convention for naming hints is SDL_HINT_X, where "SDL_X" is
 | 
			
		||||
 *  the environment variable that can be used to override the default.
 | 
			
		||||
 *
 | 
			
		||||
 *  In general these hints are just that - they may or may not be
 | 
			
		||||
 *  supported or applicable on any given platform, but they provide
 | 
			
		||||
 *  a way for an application or user to give the library a hint as
 | 
			
		||||
 *  to how they would like the library to work.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_hints_h
 | 
			
		||||
#define _SDL_hints_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling how 3D acceleration is used to accelerate the SDL screen surface.
 | 
			
		||||
 *
 | 
			
		||||
 *  SDL can try to accelerate the SDL screen surface by using streaming
 | 
			
		||||
 *  textures with a 3D rendering engine.  This variable controls whether and
 | 
			
		||||
 *  how this is done.
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Disable 3D acceleration
 | 
			
		||||
 *    "1"       - Enable 3D acceleration, using the default renderer.
 | 
			
		||||
 *    "X"       - Enable 3D acceleration, using X where X is one of the valid rendering drivers.  (e.g. "direct3d", "opengl", etc.)
 | 
			
		||||
 *
 | 
			
		||||
 *  By default SDL tries to make a best guess for each platform whether
 | 
			
		||||
 *  to use acceleration or not.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_FRAMEBUFFER_ACCELERATION   "SDL_FRAMEBUFFER_ACCELERATION"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable specifying which render driver to use.
 | 
			
		||||
 *
 | 
			
		||||
 *  If the application doesn't pick a specific renderer to use, this variable
 | 
			
		||||
 *  specifies the name of the preferred renderer.  If the preferred renderer
 | 
			
		||||
 *  can't be initialized, the normal default renderer is used.
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable is case insensitive and can be set to the following values:
 | 
			
		||||
 *    "direct3d"
 | 
			
		||||
 *    "opengl"
 | 
			
		||||
 *    "opengles2"
 | 
			
		||||
 *    "opengles"
 | 
			
		||||
 *    "software"
 | 
			
		||||
 *
 | 
			
		||||
 *  The default varies by platform, but it's the first one in the list that
 | 
			
		||||
 *  is available on the current platform.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_RENDER_DRIVER              "SDL_RENDER_DRIVER"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling whether the OpenGL render driver uses shaders if they are available.
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Disable shaders
 | 
			
		||||
 *    "1"       - Enable shaders
 | 
			
		||||
 *
 | 
			
		||||
 *  By default shaders are used if OpenGL supports them.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_RENDER_OPENGL_SHADERS      "SDL_RENDER_OPENGL_SHADERS"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling whether the Direct3D device is initialized for thread-safe operations.
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Thread-safety is not enabled (faster)
 | 
			
		||||
 *    "1"       - Thread-safety is enabled
 | 
			
		||||
 *
 | 
			
		||||
 *  By default the Direct3D device is created with thread-safety disabled.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_RENDER_DIRECT3D_THREADSAFE "SDL_RENDER_DIRECT3D_THREADSAFE"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling whether to enable Direct3D 11+'s Debug Layer.
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable does not have any effect on the Direct3D 9 based renderer.
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Disable Debug Layer use
 | 
			
		||||
 *    "1"       - Enable Debug Layer use
 | 
			
		||||
 *
 | 
			
		||||
 *  By default, SDL does not use Direct3D Debug Layer.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_RENDER_DIRECT3D11_DEBUG    "SDL_RENDER_DIRECT3D11_DEBUG"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling the scaling quality
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0" or "nearest" - Nearest pixel sampling
 | 
			
		||||
 *    "1" or "linear"  - Linear filtering (supported by OpenGL and Direct3D)
 | 
			
		||||
 *    "2" or "best"    - Currently this is the same as "linear"
 | 
			
		||||
 *
 | 
			
		||||
 *  By default nearest pixel sampling is used
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_RENDER_SCALE_QUALITY       "SDL_RENDER_SCALE_QUALITY"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling whether updates to the SDL screen surface should be synchronized with the vertical refresh, to avoid tearing.
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Disable vsync
 | 
			
		||||
 *    "1"       - Enable vsync
 | 
			
		||||
 *
 | 
			
		||||
 *  By default SDL does not sync screen surface updates with vertical refresh.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_RENDER_VSYNC               "SDL_RENDER_VSYNC"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling whether the screensaver is enabled. 
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Disable screensaver
 | 
			
		||||
 *    "1"       - Enable screensaver
 | 
			
		||||
 *
 | 
			
		||||
 *  By default SDL will disable the screensaver.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_VIDEO_ALLOW_SCREENSAVER    "SDL_VIDEO_ALLOW_SCREENSAVER"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling whether the X11 VidMode extension should be used.
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Disable XVidMode
 | 
			
		||||
 *    "1"       - Enable XVidMode
 | 
			
		||||
 *
 | 
			
		||||
 *  By default SDL will use XVidMode if it is available.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_VIDEO_X11_XVIDMODE         "SDL_VIDEO_X11_XVIDMODE"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling whether the X11 Xinerama extension should be used.
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Disable Xinerama
 | 
			
		||||
 *    "1"       - Enable Xinerama
 | 
			
		||||
 *
 | 
			
		||||
 *  By default SDL will use Xinerama if it is available.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_VIDEO_X11_XINERAMA         "SDL_VIDEO_X11_XINERAMA"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling whether the X11 XRandR extension should be used.
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Disable XRandR
 | 
			
		||||
 *    "1"       - Enable XRandR
 | 
			
		||||
 *
 | 
			
		||||
 *  By default SDL will not use XRandR because of window manager issues.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_VIDEO_X11_XRANDR           "SDL_VIDEO_X11_XRANDR"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling whether the X11 _NET_WM_PING protocol should be supported.
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Disable _NET_WM_PING
 | 
			
		||||
 *    "1"       - Enable _NET_WM_PING
 | 
			
		||||
 *
 | 
			
		||||
 *  By default SDL will use _NET_WM_PING, but for applications that know they
 | 
			
		||||
 *  will not always be able to respond to ping requests in a timely manner they can
 | 
			
		||||
 *  turn it off to avoid the window manager thinking the app is hung.
 | 
			
		||||
 *  The hint is checked in CreateWindow.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_VIDEO_X11_NET_WM_PING      "SDL_VIDEO_X11_NET_WM_PING"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling whether the window frame and title bar are interactive when the cursor is hidden 
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - The window frame is not interactive when the cursor is hidden (no move, resize, etc)
 | 
			
		||||
 *    "1"       - The window frame is interactive when the cursor is hidden
 | 
			
		||||
 *
 | 
			
		||||
 *  By default SDL will allow interaction with the window frame when the cursor is hidden
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN    "SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling whether the windows message loop is processed by SDL 
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - The window message loop is not run
 | 
			
		||||
 *    "1"       - The window message loop is processed in SDL_PumpEvents()
 | 
			
		||||
 *
 | 
			
		||||
 *  By default SDL will process the windows message loop
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP "SDL_WINDOWS_ENABLE_MESSAGELOOP"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling whether grabbing input grabs the keyboard
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Grab will affect only the mouse
 | 
			
		||||
 *    "1"       - Grab will affect mouse and keyboard
 | 
			
		||||
 *
 | 
			
		||||
 *  By default SDL will not grab the keyboard so system shortcuts still work.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_GRAB_KEYBOARD              "SDL_GRAB_KEYBOARD"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
*  \brief  A variable controlling whether relative mouse mode is implemented using mouse warping
 | 
			
		||||
*
 | 
			
		||||
*  This variable can be set to the following values:
 | 
			
		||||
*    "0"       - Relative mouse mode uses raw input
 | 
			
		||||
*    "1"       - Relative mouse mode uses mouse warping
 | 
			
		||||
*
 | 
			
		||||
*  By default SDL will use raw input for relative mouse mode
 | 
			
		||||
*/
 | 
			
		||||
#define SDL_HINT_MOUSE_RELATIVE_MODE_WARP    "SDL_MOUSE_RELATIVE_MODE_WARP"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Minimize your SDL_Window if it loses key focus when in fullscreen mode. Defaults to true.
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS   "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling whether the idle timer is disabled on iOS.
 | 
			
		||||
 *
 | 
			
		||||
 *  When an iOS app does not receive touches for some time, the screen is
 | 
			
		||||
 *  dimmed automatically. For games where the accelerometer is the only input
 | 
			
		||||
 *  this is problematic. This functionality can be disabled by setting this
 | 
			
		||||
 *  hint.
 | 
			
		||||
 *
 | 
			
		||||
 *  As of SDL 2.0.4, SDL_EnableScreenSaver and SDL_DisableScreenSaver accomplish
 | 
			
		||||
 *  the same thing on iOS. They should be preferred over this hint.
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Enable idle timer
 | 
			
		||||
 *    "1"       - Disable idle timer
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_IDLE_TIMER_DISABLED "SDL_IOS_IDLE_TIMER_DISABLED"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling which orientations are allowed on iOS.
 | 
			
		||||
 *
 | 
			
		||||
 *  In some circumstances it is necessary to be able to explicitly control
 | 
			
		||||
 *  which UI orientations are allowed.
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable is a space delimited list of the following values:
 | 
			
		||||
 *    "LandscapeLeft", "LandscapeRight", "Portrait" "PortraitUpsideDown"
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_ORIENTATIONS "SDL_IOS_ORIENTATIONS"
 | 
			
		||||
    
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling whether the Android / iOS built-in
 | 
			
		||||
 *  accelerometer should be listed as a joystick device, rather than listing
 | 
			
		||||
 *  actual joysticks only.
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - List only real joysticks and accept input from them
 | 
			
		||||
 *    "1"       - List real joysticks along with the accelerometer as if it were a 3 axis joystick (the default).
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_ACCELEROMETER_AS_JOYSTICK "SDL_ACCELEROMETER_AS_JOYSTICK"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable that lets you disable the detection and use of Xinput gamepad devices
 | 
			
		||||
 *
 | 
			
		||||
 *  The variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Disable XInput detection (only uses direct input)
 | 
			
		||||
 *    "1"       - Enable XInput detection (the default)
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_XINPUT_ENABLED "SDL_XINPUT_ENABLED"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable that causes SDL to use the old axis and button mapping for XInput devices.
 | 
			
		||||
 *
 | 
			
		||||
 *  This hint is for backwards compatibility only and will be removed in SDL 2.1
 | 
			
		||||
 *
 | 
			
		||||
 *  The default value is "0".  This hint must be set before SDL_Init()
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING "SDL_XINPUT_USE_OLD_JOYSTICK_MAPPING"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable that lets you manually hint extra gamecontroller db entries
 | 
			
		||||
 *
 | 
			
		||||
 *  The variable should be newline delimited rows of gamecontroller config data, see SDL_gamecontroller.h
 | 
			
		||||
 *
 | 
			
		||||
 *  This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
 | 
			
		||||
 *  You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping()
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_GAMECONTROLLERCONFIG "SDL_GAMECONTROLLERCONFIG"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable that lets you enable joystick (and gamecontroller) events even when your app is in the background.
 | 
			
		||||
 *
 | 
			
		||||
 *  The variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Disable joystick & gamecontroller input events when the
 | 
			
		||||
 *                application is in the background.
 | 
			
		||||
 *    "1"       - Enable joystick & gamecontroller input events when the
 | 
			
		||||
 *                application is in the background.
 | 
			
		||||
 *
 | 
			
		||||
 *  The default value is "0".  This hint may be set at any time.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS "SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief If set to "0" then never set the top most bit on a SDL Window, even if the video mode expects it.
 | 
			
		||||
 *      This is a debugging aid for developers and not expected to be used by end users. The default is "1"
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - don't allow topmost
 | 
			
		||||
 *    "1"       - allow topmost
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_ALLOW_TOPMOST "SDL_ALLOW_TOPMOST"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief A variable that controls the timer resolution, in milliseconds.
 | 
			
		||||
 *
 | 
			
		||||
 *  The higher resolution the timer, the more frequently the CPU services
 | 
			
		||||
 *  timer interrupts, and the more precise delays are, but this takes up
 | 
			
		||||
 *  power and CPU time.  This hint is only used on Windows 7 and earlier.
 | 
			
		||||
 *
 | 
			
		||||
 *  See this blog post for more information:
 | 
			
		||||
 *  http://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/
 | 
			
		||||
 *
 | 
			
		||||
 *  If this variable is set to "0", the system timer resolution is not set.
 | 
			
		||||
 *
 | 
			
		||||
 *  The default value is "1". This hint may be set at any time.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_TIMER_RESOLUTION "SDL_TIMER_RESOLUTION"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
*  \brief  A string specifying SDL's threads stack size in bytes or "0" for the backend's default size
 | 
			
		||||
*
 | 
			
		||||
*  Use this hint in case you need to set SDL's threads stack size to other than the default.
 | 
			
		||||
*  This is specially useful if you build SDL against a non glibc libc library (such as musl) which
 | 
			
		||||
*  provides a relatively small default thread stack size (a few kilobytes versus the default 8MB glibc uses).
 | 
			
		||||
*  Support for this hint is currently available only in the pthread backend.
 | 
			
		||||
*/
 | 
			
		||||
#define SDL_HINT_THREAD_STACK_SIZE              "SDL_THREAD_STACK_SIZE"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief If set to 1, then do not allow high-DPI windows. ("Retina" on Mac and iOS)
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_VIDEO_HIGHDPI_DISABLED "SDL_VIDEO_HIGHDPI_DISABLED"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief A variable that determines whether ctrl+click should generate a right-click event on Mac
 | 
			
		||||
 *
 | 
			
		||||
 *  If present, holding ctrl while left clicking will generate a right click
 | 
			
		||||
 *  event when on Mac.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK "SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
*  \brief  A variable specifying which shader compiler to preload when using the Chrome ANGLE binaries
 | 
			
		||||
*
 | 
			
		||||
*  SDL has EGL and OpenGL ES2 support on Windows via the ANGLE project. It
 | 
			
		||||
*  can use two different sets of binaries, those compiled by the user from source
 | 
			
		||||
*  or those provided by the Chrome browser. In the later case, these binaries require
 | 
			
		||||
*  that SDL loads a DLL providing the shader compiler.
 | 
			
		||||
*
 | 
			
		||||
*  This variable can be set to the following values:
 | 
			
		||||
*    "d3dcompiler_46.dll" - default, best for Vista or later.
 | 
			
		||||
*    "d3dcompiler_43.dll" - for XP support.
 | 
			
		||||
*    "none" - do not load any library, useful if you compiled ANGLE from source and included the compiler in your binaries.
 | 
			
		||||
*
 | 
			
		||||
*/
 | 
			
		||||
#define SDL_HINT_VIDEO_WIN_D3DCOMPILER              "SDL_VIDEO_WIN_D3DCOMPILER"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
*  \brief  A variable that is the address of another SDL_Window* (as a hex string formatted with "%p").
 | 
			
		||||
*  
 | 
			
		||||
*  If this hint is set before SDL_CreateWindowFrom() and the SDL_Window* it is set to has
 | 
			
		||||
*  SDL_WINDOW_OPENGL set (and running on WGL only, currently), then two things will occur on the newly 
 | 
			
		||||
*  created SDL_Window:
 | 
			
		||||
*
 | 
			
		||||
*  1. Its pixel format will be set to the same pixel format as this SDL_Window.  This is
 | 
			
		||||
*  needed for example when sharing an OpenGL context across multiple windows.
 | 
			
		||||
*
 | 
			
		||||
*  2. The flag SDL_WINDOW_OPENGL will be set on the new window so it can be used for
 | 
			
		||||
*  OpenGL rendering.
 | 
			
		||||
*
 | 
			
		||||
*  This variable can be set to the following values:
 | 
			
		||||
*    The address (as a string "%p") of the SDL_Window* that new windows created with SDL_CreateWindowFrom() should
 | 
			
		||||
*    share a pixel format with.
 | 
			
		||||
*/
 | 
			
		||||
#define SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT    "SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief A URL to a WinRT app's privacy policy
 | 
			
		||||
 *
 | 
			
		||||
 *  All network-enabled WinRT apps must make a privacy policy available to its
 | 
			
		||||
 *  users.  On Windows 8, 8.1, and RT, Microsoft mandates that this policy be
 | 
			
		||||
 *  be available in the Windows Settings charm, as accessed from within the app.
 | 
			
		||||
 *  SDL provides code to add a URL-based link there, which can point to the app's
 | 
			
		||||
 *  privacy policy.
 | 
			
		||||
 *
 | 
			
		||||
 *  To setup a URL to an app's privacy policy, set SDL_HINT_WINRT_PRIVACY_POLICY_URL
 | 
			
		||||
 *  before calling any SDL_Init functions.  The contents of the hint should
 | 
			
		||||
 *  be a valid URL.  For example, "http://www.example.com".
 | 
			
		||||
 *
 | 
			
		||||
 *  The default value is "", which will prevent SDL from adding a privacy policy
 | 
			
		||||
 *  link to the Settings charm.  This hint should only be set during app init.
 | 
			
		||||
 *
 | 
			
		||||
 *  The label text of an app's "Privacy Policy" link may be customized via another
 | 
			
		||||
 *  hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL.
 | 
			
		||||
 *
 | 
			
		||||
 *  Please note that on Windows Phone, Microsoft does not provide standard UI
 | 
			
		||||
 *  for displaying a privacy policy link, and as such, SDL_HINT_WINRT_PRIVACY_POLICY_URL
 | 
			
		||||
 *  will not get used on that platform.  Network-enabled phone apps should display
 | 
			
		||||
 *  their privacy policy through some other, in-app means.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_WINRT_PRIVACY_POLICY_URL "SDL_WINRT_PRIVACY_POLICY_URL"
 | 
			
		||||
 | 
			
		||||
/** \brief Label text for a WinRT app's privacy policy link
 | 
			
		||||
 *
 | 
			
		||||
 *  Network-enabled WinRT apps must include a privacy policy.  On Windows 8, 8.1, and RT,
 | 
			
		||||
 *  Microsoft mandates that this policy be available via the Windows Settings charm.
 | 
			
		||||
 *  SDL provides code to add a link there, with its label text being set via the
 | 
			
		||||
 *  optional hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL.
 | 
			
		||||
 *
 | 
			
		||||
 *  Please note that a privacy policy's contents are not set via this hint.  A separate
 | 
			
		||||
 *  hint, SDL_HINT_WINRT_PRIVACY_POLICY_URL, is used to link to the actual text of the
 | 
			
		||||
 *  policy.
 | 
			
		||||
 *
 | 
			
		||||
 *  The contents of this hint should be encoded as a UTF8 string.
 | 
			
		||||
 *
 | 
			
		||||
 *  The default value is "Privacy Policy".  This hint should only be set during app
 | 
			
		||||
 *  initialization, preferably before any calls to SDL_Init.
 | 
			
		||||
 *
 | 
			
		||||
 *  For additional information on linking to a privacy policy, see the documentation for
 | 
			
		||||
 *  SDL_HINT_WINRT_PRIVACY_POLICY_URL.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_WINRT_PRIVACY_POLICY_LABEL "SDL_WINRT_PRIVACY_POLICY_LABEL"
 | 
			
		||||
 | 
			
		||||
/** \brief Allows back-button-press events on Windows Phone to be marked as handled
 | 
			
		||||
 *
 | 
			
		||||
 *  Windows Phone devices typically feature a Back button.  When pressed,
 | 
			
		||||
 *  the OS will emit back-button-press events, which apps are expected to
 | 
			
		||||
 *  handle in an appropriate manner.  If apps do not explicitly mark these
 | 
			
		||||
 *  events as 'Handled', then the OS will invoke its default behavior for
 | 
			
		||||
 *  unhandled back-button-press events, which on Windows Phone 8 and 8.1 is to
 | 
			
		||||
 *  terminate the app (and attempt to switch to the previous app, or to the
 | 
			
		||||
 *  device's home screen).
 | 
			
		||||
 *
 | 
			
		||||
 *  Setting the SDL_HINT_WINRT_HANDLE_BACK_BUTTON hint to "1" will cause SDL
 | 
			
		||||
 *  to mark back-button-press events as Handled, if and when one is sent to
 | 
			
		||||
 *  the app.
 | 
			
		||||
 *
 | 
			
		||||
 *  Internally, Windows Phone sends back button events as parameters to
 | 
			
		||||
 *  special back-button-press callback functions.  Apps that need to respond
 | 
			
		||||
 *  to back-button-press events are expected to register one or more
 | 
			
		||||
 *  callback functions for such, shortly after being launched (during the
 | 
			
		||||
 *  app's initialization phase).  After the back button is pressed, the OS
 | 
			
		||||
 *  will invoke these callbacks.  If the app's callback(s) do not explicitly
 | 
			
		||||
 *  mark the event as handled by the time they return, or if the app never
 | 
			
		||||
 *  registers one of these callback, the OS will consider the event
 | 
			
		||||
 *  un-handled, and it will apply its default back button behavior (terminate
 | 
			
		||||
 *  the app).
 | 
			
		||||
 *
 | 
			
		||||
 *  SDL registers its own back-button-press callback with the Windows Phone
 | 
			
		||||
 *  OS.  This callback will emit a pair of SDL key-press events (SDL_KEYDOWN
 | 
			
		||||
 *  and SDL_KEYUP), each with a scancode of SDL_SCANCODE_AC_BACK, after which
 | 
			
		||||
 *  it will check the contents of the hint, SDL_HINT_WINRT_HANDLE_BACK_BUTTON.
 | 
			
		||||
 *  If the hint's value is set to "1", the back button event's Handled
 | 
			
		||||
 *  property will get set to 'true'.  If the hint's value is set to something
 | 
			
		||||
 *  else, or if it is unset, SDL will leave the event's Handled property
 | 
			
		||||
 *  alone.  (By default, the OS sets this property to 'false', to note.)
 | 
			
		||||
 *
 | 
			
		||||
 *  SDL apps can either set SDL_HINT_WINRT_HANDLE_BACK_BUTTON well before a
 | 
			
		||||
 *  back button is pressed, or can set it in direct-response to a back button
 | 
			
		||||
 *  being pressed.
 | 
			
		||||
 *
 | 
			
		||||
 *  In order to get notified when a back button is pressed, SDL apps should
 | 
			
		||||
 *  register a callback function with SDL_AddEventWatch(), and have it listen
 | 
			
		||||
 *  for SDL_KEYDOWN events that have a scancode of SDL_SCANCODE_AC_BACK.
 | 
			
		||||
 *  (Alternatively, SDL_KEYUP events can be listened-for.  Listening for
 | 
			
		||||
 *  either event type is suitable.)  Any value of SDL_HINT_WINRT_HANDLE_BACK_BUTTON
 | 
			
		||||
 *  set by such a callback, will be applied to the OS' current
 | 
			
		||||
 *  back-button-press event.
 | 
			
		||||
 *
 | 
			
		||||
 *  More details on back button behavior in Windows Phone apps can be found
 | 
			
		||||
 *  at the following page, on Microsoft's developer site:
 | 
			
		||||
 *  http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj247550(v=vs.105).aspx
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_WINRT_HANDLE_BACK_BUTTON "SDL_WINRT_HANDLE_BACK_BUTTON"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable that dictates policy for fullscreen Spaces on Mac OS X.
 | 
			
		||||
 *
 | 
			
		||||
 *  This hint only applies to Mac OS X.
 | 
			
		||||
 *
 | 
			
		||||
 *  The variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Disable Spaces support (FULLSCREEN_DESKTOP won't use them and
 | 
			
		||||
 *                SDL_WINDOW_RESIZABLE windows won't offer the "fullscreen"
 | 
			
		||||
 *                button on their titlebars).
 | 
			
		||||
 *    "1"       - Enable Spaces support (FULLSCREEN_DESKTOP will use them and
 | 
			
		||||
 *                SDL_WINDOW_RESIZABLE windows will offer the "fullscreen"
 | 
			
		||||
 *                button on their titlebars).
 | 
			
		||||
 *
 | 
			
		||||
 *  The default value is "1". Spaces are disabled regardless of this hint if
 | 
			
		||||
 *   the OS isn't at least Mac OS X Lion (10.7). This hint must be set before
 | 
			
		||||
 *   any windows are created.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES    "SDL_VIDEO_MAC_FULLSCREEN_SPACES"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
*  \brief  When set don't force the SDL app to become a foreground process
 | 
			
		||||
*
 | 
			
		||||
*  This hint only applies to Mac OS X.
 | 
			
		||||
*
 | 
			
		||||
*/
 | 
			
		||||
#define SDL_HINT_MAC_BACKGROUND_APP    "SDL_MAC_BACKGROUND_APP"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Android APK expansion main file version. Should be a string number like "1", "2" etc.
 | 
			
		||||
 *
 | 
			
		||||
 * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION.
 | 
			
		||||
 *
 | 
			
		||||
 * If both hints were set then SDL_RWFromFile() will look into expansion files
 | 
			
		||||
 * after a given relative path was not found in the internal storage and assets.
 | 
			
		||||
 *
 | 
			
		||||
 * By default this hint is not set and the APK expansion files are not searched.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION"
 | 
			
		||||
 
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Android APK expansion patch file version. Should be a string number like "1", "2" etc.
 | 
			
		||||
 *
 | 
			
		||||
 * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION.
 | 
			
		||||
 *
 | 
			
		||||
 * If both hints were set then SDL_RWFromFile() will look into expansion files
 | 
			
		||||
 * after a given relative path was not found in the internal storage and assets.
 | 
			
		||||
 *
 | 
			
		||||
 * By default this hint is not set and the APK expansion files are not searched.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief A variable to control whether certain IMEs should handle text editing internally instead of sending SDL_TEXTEDITING events.
 | 
			
		||||
 *
 | 
			
		||||
 * The variable can be set to the following values:
 | 
			
		||||
 *   "0"       - SDL_TEXTEDITING events are sent, and it is the application's
 | 
			
		||||
 *               responsibility to render the text from these events and 
 | 
			
		||||
 *               differentiate it somehow from committed text. (default)
 | 
			
		||||
 *   "1"       - If supported by the IME then SDL_TEXTEDITING events are not sent, 
 | 
			
		||||
 *               and text that is being composed will be rendered in its own UI.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_IME_INTERNAL_EDITING "SDL_IME_INTERNAL_EDITING"
 | 
			
		||||
 | 
			
		||||
 /**
 | 
			
		||||
 * \brief A variable to control whether mouse and touch events are to be treated together or separately
 | 
			
		||||
 *
 | 
			
		||||
 * The variable can be set to the following values:
 | 
			
		||||
 *   "0"       - Mouse events will be handled as touch events, and touch will raise fake mouse
 | 
			
		||||
 *               events. This is the behaviour of SDL <= 2.0.3. (default)
 | 
			
		||||
 *   "1"       - Mouse events will be handled separately from pure touch events.
 | 
			
		||||
 *
 | 
			
		||||
 * The value of this hint is used at runtime, so it can be changed at any time.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH "SDL_ANDROID_SEPARATE_MOUSE_AND_TOUCH"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief override the binding element for keyboard inputs for Emscripten builds
 | 
			
		||||
 *
 | 
			
		||||
 * This hint only applies to the emscripten platform
 | 
			
		||||
 *
 | 
			
		||||
 * The variable can be one of
 | 
			
		||||
 *    "#window"      - The javascript window object (this is the default)
 | 
			
		||||
 *    "#document"    - The javascript document object
 | 
			
		||||
 *    "#screen"      - the javascript window.screen object
 | 
			
		||||
 *    "#canvas"      - the WebGL canvas element
 | 
			
		||||
 *    any other string without a leading # sign applies to the element on the page with that ID.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT   "SDL_EMSCRIPTEN_KEYBOARD_ELEMENT"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Tell SDL not to catch the SIGINT or SIGTERM signals.
 | 
			
		||||
 *
 | 
			
		||||
 * This hint only applies to Unix-like platforms.
 | 
			
		||||
 *
 | 
			
		||||
 * The variable can be set to the following values:
 | 
			
		||||
 *   "0"       - SDL will install a SIGINT and SIGTERM handler, and when it
 | 
			
		||||
 *               catches a signal, convert it into an SDL_QUIT event.
 | 
			
		||||
 *   "1"       - SDL will not install a signal handler at all.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_NO_SIGNAL_HANDLERS   "SDL_NO_SIGNAL_HANDLERS"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Tell SDL not to generate window-close events for Alt+F4 on Windows.
 | 
			
		||||
 *
 | 
			
		||||
 * The variable can be set to the following values:
 | 
			
		||||
 *   "0"       - SDL will generate a window-close event when it sees Alt+F4.
 | 
			
		||||
 *   "1"       - SDL will only do normal key handling for Alt+F4.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4	"SDL_WINDOWS_NO_CLOSE_ON_ALT_F4"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  An enumeration of hint priorities
 | 
			
		||||
 */
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_HINT_DEFAULT,
 | 
			
		||||
    SDL_HINT_NORMAL,
 | 
			
		||||
    SDL_HINT_OVERRIDE
 | 
			
		||||
} SDL_HintPriority;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Set a hint with a specific priority
 | 
			
		||||
 *
 | 
			
		||||
 *  The priority controls the behavior when setting a hint that already
 | 
			
		||||
 *  has a value.  Hints will replace existing hints of their priority and
 | 
			
		||||
 *  lower.  Environment variables are considered to have override priority.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return SDL_TRUE if the hint was set, SDL_FALSE otherwise
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_SetHintWithPriority(const char *name,
 | 
			
		||||
                                                         const char *value,
 | 
			
		||||
                                                         SDL_HintPriority priority);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Set a hint with normal priority
 | 
			
		||||
 *
 | 
			
		||||
 *  \return SDL_TRUE if the hint was set, SDL_FALSE otherwise
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_SetHint(const char *name,
 | 
			
		||||
                                             const char *value);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Get a hint
 | 
			
		||||
 *
 | 
			
		||||
 *  \return The string value of a hint variable.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC const char * SDLCALL SDL_GetHint(const char *name);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Add a function to watch a particular hint
 | 
			
		||||
 *
 | 
			
		||||
 *  \param name The hint to watch
 | 
			
		||||
 *  \param callback The function to call when the hint value changes
 | 
			
		||||
 *  \param userdata A pointer to pass to the callback function
 | 
			
		||||
 */
 | 
			
		||||
typedef void (*SDL_HintCallback)(void *userdata, const char *name, const char *oldValue, const char *newValue);
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_AddHintCallback(const char *name,
 | 
			
		||||
                                                 SDL_HintCallback callback,
 | 
			
		||||
                                                 void *userdata);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Remove a function watching a particular hint
 | 
			
		||||
 *
 | 
			
		||||
 *  \param name The hint being watched
 | 
			
		||||
 *  \param callback The function being called when the hint value changes
 | 
			
		||||
 *  \param userdata A pointer being passed to the callback function
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_DelHintCallback(const char *name,
 | 
			
		||||
                                                 SDL_HintCallback callback,
 | 
			
		||||
                                                 void *userdata);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  Clear all hints
 | 
			
		||||
 *
 | 
			
		||||
 *  This function is called during SDL_Quit() to free stored hints.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_ClearHints(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_hints_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
							
								
								
									
										145
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_image.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										145
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_image.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,145 @@
 | 
			
		||||
/*
 | 
			
		||||
  SDL_image:  An example image loading library for use with SDL
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/* A simple library to load images of various formats as SDL surfaces */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_IMAGE_H
 | 
			
		||||
#define _SDL_IMAGE_H
 | 
			
		||||
 | 
			
		||||
#include "SDL.h"
 | 
			
		||||
#include "SDL_version.h"
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Printable format: "%d.%d.%d", MAJOR, MINOR, PATCHLEVEL
 | 
			
		||||
*/
 | 
			
		||||
#define SDL_IMAGE_MAJOR_VERSION 2
 | 
			
		||||
#define SDL_IMAGE_MINOR_VERSION 0
 | 
			
		||||
#define SDL_IMAGE_PATCHLEVEL    1
 | 
			
		||||
 | 
			
		||||
/* This macro can be used to fill a version structure with the compile-time
 | 
			
		||||
 * version of the SDL_image library.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_IMAGE_VERSION(X)                        \
 | 
			
		||||
{                                                   \
 | 
			
		||||
    (X)->major = SDL_IMAGE_MAJOR_VERSION;           \
 | 
			
		||||
    (X)->minor = SDL_IMAGE_MINOR_VERSION;           \
 | 
			
		||||
    (X)->patch = SDL_IMAGE_PATCHLEVEL;              \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* This function gets the version of the dynamically linked SDL_image library.
 | 
			
		||||
   it should NOT be used to fill a version structure, instead you should
 | 
			
		||||
   use the SDL_IMAGE_VERSION() macro.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC const SDL_version * SDLCALL IMG_Linked_Version(void);
 | 
			
		||||
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    IMG_INIT_JPG = 0x00000001,
 | 
			
		||||
    IMG_INIT_PNG = 0x00000002,
 | 
			
		||||
    IMG_INIT_TIF = 0x00000004,
 | 
			
		||||
    IMG_INIT_WEBP = 0x00000008
 | 
			
		||||
} IMG_InitFlags;
 | 
			
		||||
 | 
			
		||||
/* Loads dynamic libraries and prepares them for use.  Flags should be
 | 
			
		||||
   one or more flags from IMG_InitFlags OR'd together.
 | 
			
		||||
   It returns the flags successfully initialized, or 0 on failure.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL IMG_Init(int flags);
 | 
			
		||||
 | 
			
		||||
/* Unloads libraries loaded with IMG_Init */
 | 
			
		||||
extern DECLSPEC void SDLCALL IMG_Quit(void);
 | 
			
		||||
 | 
			
		||||
/* Load an image from an SDL data source.
 | 
			
		||||
   The 'type' may be one of: "BMP", "GIF", "PNG", etc.
 | 
			
		||||
 | 
			
		||||
   If the image format supports a transparent pixel, SDL will set the
 | 
			
		||||
   colorkey for the surface.  You can enable RLE acceleration on the
 | 
			
		||||
   surface afterwards by calling:
 | 
			
		||||
    SDL_SetColorKey(image, SDL_RLEACCEL, image->format->colorkey);
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_Surface * SDLCALL IMG_LoadTyped_RW(SDL_RWops *src, int freesrc, const char *type);
 | 
			
		||||
/* Convenience functions */
 | 
			
		||||
extern DECLSPEC SDL_Surface * SDLCALL IMG_Load(const char *file);
 | 
			
		||||
extern DECLSPEC SDL_Surface * SDLCALL IMG_Load_RW(SDL_RWops *src, int freesrc);
 | 
			
		||||
 | 
			
		||||
#if SDL_VERSION_ATLEAST(2,0,0)
 | 
			
		||||
/* Load an image directly into a render texture.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_Texture * SDLCALL IMG_LoadTexture(SDL_Renderer *renderer, const char *file);
 | 
			
		||||
extern DECLSPEC SDL_Texture * SDLCALL IMG_LoadTexture_RW(SDL_Renderer *renderer, SDL_RWops *src, int freesrc);
 | 
			
		||||
extern DECLSPEC SDL_Texture * SDLCALL IMG_LoadTextureTyped_RW(SDL_Renderer *renderer, SDL_RWops *src, int freesrc, const char *type);
 | 
			
		||||
#endif /* SDL 2.0 */
 | 
			
		||||
 | 
			
		||||
/* Functions to detect a file type, given a seekable source */
 | 
			
		||||
extern DECLSPEC int SDLCALL IMG_isICO(SDL_RWops *src);
 | 
			
		||||
extern DECLSPEC int SDLCALL IMG_isCUR(SDL_RWops *src);
 | 
			
		||||
extern DECLSPEC int SDLCALL IMG_isBMP(SDL_RWops *src);
 | 
			
		||||
extern DECLSPEC int SDLCALL IMG_isGIF(SDL_RWops *src);
 | 
			
		||||
extern DECLSPEC int SDLCALL IMG_isJPG(SDL_RWops *src);
 | 
			
		||||
extern DECLSPEC int SDLCALL IMG_isLBM(SDL_RWops *src);
 | 
			
		||||
extern DECLSPEC int SDLCALL IMG_isPCX(SDL_RWops *src);
 | 
			
		||||
extern DECLSPEC int SDLCALL IMG_isPNG(SDL_RWops *src);
 | 
			
		||||
extern DECLSPEC int SDLCALL IMG_isPNM(SDL_RWops *src);
 | 
			
		||||
extern DECLSPEC int SDLCALL IMG_isTIF(SDL_RWops *src);
 | 
			
		||||
extern DECLSPEC int SDLCALL IMG_isXCF(SDL_RWops *src);
 | 
			
		||||
extern DECLSPEC int SDLCALL IMG_isXPM(SDL_RWops *src);
 | 
			
		||||
extern DECLSPEC int SDLCALL IMG_isXV(SDL_RWops *src);
 | 
			
		||||
extern DECLSPEC int SDLCALL IMG_isWEBP(SDL_RWops *src);
 | 
			
		||||
 | 
			
		||||
/* Individual loading functions */
 | 
			
		||||
extern DECLSPEC SDL_Surface * SDLCALL IMG_LoadICO_RW(SDL_RWops *src);
 | 
			
		||||
extern DECLSPEC SDL_Surface * SDLCALL IMG_LoadCUR_RW(SDL_RWops *src);
 | 
			
		||||
extern DECLSPEC SDL_Surface * SDLCALL IMG_LoadBMP_RW(SDL_RWops *src);
 | 
			
		||||
extern DECLSPEC SDL_Surface * SDLCALL IMG_LoadGIF_RW(SDL_RWops *src);
 | 
			
		||||
extern DECLSPEC SDL_Surface * SDLCALL IMG_LoadJPG_RW(SDL_RWops *src);
 | 
			
		||||
extern DECLSPEC SDL_Surface * SDLCALL IMG_LoadLBM_RW(SDL_RWops *src);
 | 
			
		||||
extern DECLSPEC SDL_Surface * SDLCALL IMG_LoadPCX_RW(SDL_RWops *src);
 | 
			
		||||
extern DECLSPEC SDL_Surface * SDLCALL IMG_LoadPNG_RW(SDL_RWops *src);
 | 
			
		||||
extern DECLSPEC SDL_Surface * SDLCALL IMG_LoadPNM_RW(SDL_RWops *src);
 | 
			
		||||
extern DECLSPEC SDL_Surface * SDLCALL IMG_LoadTGA_RW(SDL_RWops *src);
 | 
			
		||||
extern DECLSPEC SDL_Surface * SDLCALL IMG_LoadTIF_RW(SDL_RWops *src);
 | 
			
		||||
extern DECLSPEC SDL_Surface * SDLCALL IMG_LoadXCF_RW(SDL_RWops *src);
 | 
			
		||||
extern DECLSPEC SDL_Surface * SDLCALL IMG_LoadXPM_RW(SDL_RWops *src);
 | 
			
		||||
extern DECLSPEC SDL_Surface * SDLCALL IMG_LoadXV_RW(SDL_RWops *src);
 | 
			
		||||
extern DECLSPEC SDL_Surface * SDLCALL IMG_LoadWEBP_RW(SDL_RWops *src);
 | 
			
		||||
 | 
			
		||||
extern DECLSPEC SDL_Surface * SDLCALL IMG_ReadXPMFromArray(char **xpm);
 | 
			
		||||
 | 
			
		||||
/* Individual saving functions */
 | 
			
		||||
extern DECLSPEC int SDLCALL IMG_SavePNG(SDL_Surface *surface, const char *file);
 | 
			
		||||
extern DECLSPEC int SDLCALL IMG_SavePNG_RW(SDL_Surface *surface, SDL_RWops *dst, int freedst);
 | 
			
		||||
 | 
			
		||||
/* We'll use SDL for reporting errors */
 | 
			
		||||
#define IMG_SetError    SDL_SetError
 | 
			
		||||
#define IMG_GetError    SDL_GetError
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_IMAGE_H */
 | 
			
		||||
							
								
								
									
										273
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_joystick.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										273
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_joystick.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,273 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_joystick.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Include file for SDL joystick event handling
 | 
			
		||||
 *
 | 
			
		||||
 * The term "device_index" identifies currently plugged in joystick devices between 0 and SDL_NumJoysticks, with the exact joystick
 | 
			
		||||
 *   behind a device_index changing as joysticks are plugged and unplugged.
 | 
			
		||||
 *
 | 
			
		||||
 * The term "instance_id" is the current instantiation of a joystick device in the system, if the joystick is removed and then re-inserted
 | 
			
		||||
 *   then it will get a new instance_id, instance_id's are monotonically increasing identifiers of a joystick plugged in.
 | 
			
		||||
 *
 | 
			
		||||
 * The term JoystickGUID is a stable 128-bit identifier for a joystick device that does not change over time, it identifies class of
 | 
			
		||||
 *   the device (a X360 wired controller for example). This identifier is platform dependent.
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_joystick_h
 | 
			
		||||
#define _SDL_joystick_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
#include "SDL_error.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_joystick.h
 | 
			
		||||
 *
 | 
			
		||||
 *  In order to use these functions, SDL_Init() must have been called
 | 
			
		||||
 *  with the ::SDL_INIT_JOYSTICK flag.  This causes SDL to scan the system
 | 
			
		||||
 *  for joysticks, and load appropriate drivers.
 | 
			
		||||
 *
 | 
			
		||||
 *  If you would like to receive joystick updates while the application
 | 
			
		||||
 *  is in the background, you should set the following hint before calling
 | 
			
		||||
 *  SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* The joystick structure used to identify an SDL joystick */
 | 
			
		||||
struct _SDL_Joystick;
 | 
			
		||||
typedef struct _SDL_Joystick SDL_Joystick;
 | 
			
		||||
 | 
			
		||||
/* A structure that encodes the stable unique id for a joystick device */
 | 
			
		||||
typedef struct {
 | 
			
		||||
    Uint8 data[16];
 | 
			
		||||
} SDL_JoystickGUID;
 | 
			
		||||
 | 
			
		||||
typedef Sint32 SDL_JoystickID;
 | 
			
		||||
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_JOYSTICK_POWER_UNKNOWN = -1,
 | 
			
		||||
    SDL_JOYSTICK_POWER_EMPTY,
 | 
			
		||||
    SDL_JOYSTICK_POWER_LOW,
 | 
			
		||||
    SDL_JOYSTICK_POWER_MEDIUM,
 | 
			
		||||
    SDL_JOYSTICK_POWER_FULL,
 | 
			
		||||
    SDL_JOYSTICK_POWER_WIRED,
 | 
			
		||||
    SDL_JOYSTICK_POWER_MAX
 | 
			
		||||
} SDL_JoystickPowerLevel;
 | 
			
		||||
 | 
			
		||||
/* Function prototypes */
 | 
			
		||||
/**
 | 
			
		||||
 *  Count the number of joysticks attached to the system right now
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_NumJoysticks(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the implementation dependent name of a joystick.
 | 
			
		||||
 *  This can be called before any joysticks are opened.
 | 
			
		||||
 *  If no name can be found, this function returns NULL.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC const char *SDLCALL SDL_JoystickNameForIndex(int device_index);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Open a joystick for use.
 | 
			
		||||
 *  The index passed as an argument refers to the N'th joystick on the system.
 | 
			
		||||
 *  This index is not the value which will identify this joystick in future
 | 
			
		||||
 *  joystick events.  The joystick's instance id (::SDL_JoystickID) will be used
 | 
			
		||||
 *  there instead.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return A joystick identifier, or NULL if an error occurred.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickOpen(int device_index);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Return the SDL_Joystick associated with an instance id.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromInstanceID(SDL_JoystickID joyid);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Return the name for this currently opened joystick.
 | 
			
		||||
 *  If no name can be found, this function returns NULL.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC const char *SDLCALL SDL_JoystickName(SDL_Joystick * joystick);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Return the GUID for the joystick at this index
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetDeviceGUID(int device_index);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Return the GUID for this opened joystick
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUID(SDL_Joystick * joystick);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Return a string representation for this guid. pszGUID must point to at least 33 bytes
 | 
			
		||||
 *  (32 for the string plus a NULL terminator).
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_JoystickGetGUIDString(SDL_JoystickGUID guid, char *pszGUID, int cbGUID);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  convert a string into a joystick formatted guid
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUIDFromString(const char *pchGUID);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Returns SDL_TRUE if the joystick has been opened and currently connected, or SDL_FALSE if it has not.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAttached(SDL_Joystick * joystick);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the instance ID of an opened joystick or -1 if the joystick is invalid.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickInstanceID(SDL_Joystick * joystick);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the number of general axis controls on a joystick.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_JoystickNumAxes(SDL_Joystick * joystick);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the number of trackballs on a joystick.
 | 
			
		||||
 *
 | 
			
		||||
 *  Joystick trackballs have only relative motion events associated
 | 
			
		||||
 *  with them and their state cannot be polled.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_JoystickNumBalls(SDL_Joystick * joystick);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the number of POV hats on a joystick.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_JoystickNumHats(SDL_Joystick * joystick);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the number of buttons on a joystick.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_JoystickNumButtons(SDL_Joystick * joystick);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Update the current state of the open joysticks.
 | 
			
		||||
 *
 | 
			
		||||
 *  This is called automatically by the event loop if any joystick
 | 
			
		||||
 *  events are enabled.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_JoystickUpdate(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Enable/disable joystick event polling.
 | 
			
		||||
 *
 | 
			
		||||
 *  If joystick events are disabled, you must call SDL_JoystickUpdate()
 | 
			
		||||
 *  yourself and check the state of the joystick when you want joystick
 | 
			
		||||
 *  information.
 | 
			
		||||
 *
 | 
			
		||||
 *  The state can be one of ::SDL_QUERY, ::SDL_ENABLE or ::SDL_IGNORE.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_JoystickEventState(int state);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the current state of an axis control on a joystick.
 | 
			
		||||
 *
 | 
			
		||||
 *  The state is a value ranging from -32768 to 32767.
 | 
			
		||||
 *
 | 
			
		||||
 *  The axis indices start at index 0.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC Sint16 SDLCALL SDL_JoystickGetAxis(SDL_Joystick * joystick,
 | 
			
		||||
                                                   int axis);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name Hat positions
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
#define SDL_HAT_CENTERED    0x00
 | 
			
		||||
#define SDL_HAT_UP          0x01
 | 
			
		||||
#define SDL_HAT_RIGHT       0x02
 | 
			
		||||
#define SDL_HAT_DOWN        0x04
 | 
			
		||||
#define SDL_HAT_LEFT        0x08
 | 
			
		||||
#define SDL_HAT_RIGHTUP     (SDL_HAT_RIGHT|SDL_HAT_UP)
 | 
			
		||||
#define SDL_HAT_RIGHTDOWN   (SDL_HAT_RIGHT|SDL_HAT_DOWN)
 | 
			
		||||
#define SDL_HAT_LEFTUP      (SDL_HAT_LEFT|SDL_HAT_UP)
 | 
			
		||||
#define SDL_HAT_LEFTDOWN    (SDL_HAT_LEFT|SDL_HAT_DOWN)
 | 
			
		||||
/* @} */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the current state of a POV hat on a joystick.
 | 
			
		||||
 *
 | 
			
		||||
 *  The hat indices start at index 0.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return The return value is one of the following positions:
 | 
			
		||||
 *           - ::SDL_HAT_CENTERED
 | 
			
		||||
 *           - ::SDL_HAT_UP
 | 
			
		||||
 *           - ::SDL_HAT_RIGHT
 | 
			
		||||
 *           - ::SDL_HAT_DOWN
 | 
			
		||||
 *           - ::SDL_HAT_LEFT
 | 
			
		||||
 *           - ::SDL_HAT_RIGHTUP
 | 
			
		||||
 *           - ::SDL_HAT_RIGHTDOWN
 | 
			
		||||
 *           - ::SDL_HAT_LEFTUP
 | 
			
		||||
 *           - ::SDL_HAT_LEFTDOWN
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetHat(SDL_Joystick * joystick,
 | 
			
		||||
                                                 int hat);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the ball axis change since the last poll.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return 0, or -1 if you passed it invalid parameters.
 | 
			
		||||
 *
 | 
			
		||||
 *  The ball indices start at index 0.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_JoystickGetBall(SDL_Joystick * joystick,
 | 
			
		||||
                                                int ball, int *dx, int *dy);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the current state of a button on a joystick.
 | 
			
		||||
 *
 | 
			
		||||
 *  The button indices start at index 0.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetButton(SDL_Joystick * joystick,
 | 
			
		||||
                                                    int button);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Close a joystick previously opened with SDL_JoystickOpen().
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_JoystickClose(SDL_Joystick * joystick);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Return the battery level of this joystick
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_JoystickPowerLevel SDLCALL SDL_JoystickCurrentPowerLevel(SDL_Joystick * joystick);
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_joystick_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
							
								
								
									
										217
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_keyboard.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										217
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_keyboard.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,217 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_keyboard.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Include file for SDL keyboard event handling
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_keyboard_h
 | 
			
		||||
#define _SDL_keyboard_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
#include "SDL_error.h"
 | 
			
		||||
#include "SDL_keycode.h"
 | 
			
		||||
#include "SDL_video.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief The SDL keysym structure, used in key events.
 | 
			
		||||
 *
 | 
			
		||||
 *  \note  If you are looking for translated character input, see the ::SDL_TEXTINPUT event.
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_Keysym
 | 
			
		||||
{
 | 
			
		||||
    SDL_Scancode scancode;      /**< SDL physical key code - see ::SDL_Scancode for details */
 | 
			
		||||
    SDL_Keycode sym;            /**< SDL virtual key code - see ::SDL_Keycode for details */
 | 
			
		||||
    Uint16 mod;                 /**< current key modifiers */
 | 
			
		||||
    Uint32 unused;
 | 
			
		||||
} SDL_Keysym;
 | 
			
		||||
 | 
			
		||||
/* Function prototypes */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Get the window which currently has keyboard focus.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_Window * SDLCALL SDL_GetKeyboardFocus(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Get a snapshot of the current state of the keyboard.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param numkeys if non-NULL, receives the length of the returned array.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return An array of key states. Indexes into this array are obtained by using ::SDL_Scancode values.
 | 
			
		||||
 *
 | 
			
		||||
 *  \b Example:
 | 
			
		||||
 *  \code
 | 
			
		||||
 *  const Uint8 *state = SDL_GetKeyboardState(NULL);
 | 
			
		||||
 *  if ( state[SDL_SCANCODE_RETURN] )   {
 | 
			
		||||
 *      printf("<RETURN> is pressed.\n");
 | 
			
		||||
 *  }
 | 
			
		||||
 *  \endcode
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC const Uint8 *SDLCALL SDL_GetKeyboardState(int *numkeys);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Get the current key modifier state for the keyboard.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_Keymod SDLCALL SDL_GetModState(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Set the current key modifier state for the keyboard.
 | 
			
		||||
 *
 | 
			
		||||
 *  \note This does not change the keyboard state, only the key modifier flags.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_SetModState(SDL_Keymod modstate);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Get the key code corresponding to the given scancode according
 | 
			
		||||
 *         to the current keyboard layout.
 | 
			
		||||
 *
 | 
			
		||||
 *  See ::SDL_Keycode for details.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_GetKeyName()
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromScancode(SDL_Scancode scancode);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Get the scancode corresponding to the given key code according to the
 | 
			
		||||
 *         current keyboard layout.
 | 
			
		||||
 *
 | 
			
		||||
 *  See ::SDL_Scancode for details.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_GetScancodeName()
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromKey(SDL_Keycode key);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Get a human-readable name for a scancode.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return A pointer to the name for the scancode.
 | 
			
		||||
 *          If the scancode doesn't have a name, this function returns
 | 
			
		||||
 *          an empty string ("").
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_Scancode
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC const char *SDLCALL SDL_GetScancodeName(SDL_Scancode scancode);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Get a scancode from a human-readable name
 | 
			
		||||
 *
 | 
			
		||||
 *  \return scancode, or SDL_SCANCODE_UNKNOWN if the name wasn't recognized
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_Scancode
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromName(const char *name);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Get a human-readable name for a key.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return A pointer to a UTF-8 string that stays valid at least until the next
 | 
			
		||||
 *          call to this function. If you need it around any longer, you must
 | 
			
		||||
 *          copy it.  If the key doesn't have a name, this function returns an
 | 
			
		||||
 *          empty string ("").
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_Key
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC const char *SDLCALL SDL_GetKeyName(SDL_Keycode key);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Get a key code from a human-readable name
 | 
			
		||||
 *
 | 
			
		||||
 *  \return key code, or SDLK_UNKNOWN if the name wasn't recognized
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_Keycode
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromName(const char *name);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Start accepting Unicode text input events.
 | 
			
		||||
 *         This function will show the on-screen keyboard if supported.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_StopTextInput()
 | 
			
		||||
 *  \sa SDL_SetTextInputRect()
 | 
			
		||||
 *  \sa SDL_HasScreenKeyboardSupport()
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_StartTextInput(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Return whether or not Unicode text input events are enabled.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_StartTextInput()
 | 
			
		||||
 *  \sa SDL_StopTextInput()
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputActive(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Stop receiving any text input events.
 | 
			
		||||
 *         This function will hide the on-screen keyboard if supported.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_StartTextInput()
 | 
			
		||||
 *  \sa SDL_HasScreenKeyboardSupport()
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_StopTextInput(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Set the rectangle used to type Unicode text inputs.
 | 
			
		||||
 *         This is used as a hint for IME and on-screen keyboard placement.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_StartTextInput()
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_SetTextInputRect(SDL_Rect *rect);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Returns whether the platform has some screen keyboard support.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return SDL_TRUE if some keyboard support is available else SDL_FALSE.
 | 
			
		||||
 *
 | 
			
		||||
 *  \note Not all screen keyboard functions are supported on all platforms.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_IsScreenKeyboardShown()
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasScreenKeyboardSupport(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Returns whether the screen keyboard is shown for given window.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param window The window for which screen keyboard should be queried.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return SDL_TRUE if screen keyboard is shown else SDL_FALSE.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_HasScreenKeyboardSupport()
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenKeyboardShown(SDL_Window *window);
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_keyboard_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
							
								
								
									
										341
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_keycode.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										341
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_keycode.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,341 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_keycode.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Defines constants which identify keyboard keys and modifiers.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_keycode_h
 | 
			
		||||
#define _SDL_keycode_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
#include "SDL_scancode.h"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief The SDL virtual key representation.
 | 
			
		||||
 *
 | 
			
		||||
 *  Values of this type are used to represent keyboard keys using the current
 | 
			
		||||
 *  layout of the keyboard.  These values include Unicode values representing
 | 
			
		||||
 *  the unmodified character that would be generated by pressing the key, or
 | 
			
		||||
 *  an SDLK_* constant for those keys that do not generate characters.
 | 
			
		||||
 */
 | 
			
		||||
typedef Sint32 SDL_Keycode;
 | 
			
		||||
 | 
			
		||||
#define SDLK_SCANCODE_MASK (1<<30)
 | 
			
		||||
#define SDL_SCANCODE_TO_KEYCODE(X)  (X | SDLK_SCANCODE_MASK)
 | 
			
		||||
 | 
			
		||||
enum
 | 
			
		||||
{
 | 
			
		||||
    SDLK_UNKNOWN = 0,
 | 
			
		||||
 | 
			
		||||
    SDLK_RETURN = '\r',
 | 
			
		||||
    SDLK_ESCAPE = '\033',
 | 
			
		||||
    SDLK_BACKSPACE = '\b',
 | 
			
		||||
    SDLK_TAB = '\t',
 | 
			
		||||
    SDLK_SPACE = ' ',
 | 
			
		||||
    SDLK_EXCLAIM = '!',
 | 
			
		||||
    SDLK_QUOTEDBL = '"',
 | 
			
		||||
    SDLK_HASH = '#',
 | 
			
		||||
    SDLK_PERCENT = '%',
 | 
			
		||||
    SDLK_DOLLAR = '$',
 | 
			
		||||
    SDLK_AMPERSAND = '&',
 | 
			
		||||
    SDLK_QUOTE = '\'',
 | 
			
		||||
    SDLK_LEFTPAREN = '(',
 | 
			
		||||
    SDLK_RIGHTPAREN = ')',
 | 
			
		||||
    SDLK_ASTERISK = '*',
 | 
			
		||||
    SDLK_PLUS = '+',
 | 
			
		||||
    SDLK_COMMA = ',',
 | 
			
		||||
    SDLK_MINUS = '-',
 | 
			
		||||
    SDLK_PERIOD = '.',
 | 
			
		||||
    SDLK_SLASH = '/',
 | 
			
		||||
    SDLK_0 = '0',
 | 
			
		||||
    SDLK_1 = '1',
 | 
			
		||||
    SDLK_2 = '2',
 | 
			
		||||
    SDLK_3 = '3',
 | 
			
		||||
    SDLK_4 = '4',
 | 
			
		||||
    SDLK_5 = '5',
 | 
			
		||||
    SDLK_6 = '6',
 | 
			
		||||
    SDLK_7 = '7',
 | 
			
		||||
    SDLK_8 = '8',
 | 
			
		||||
    SDLK_9 = '9',
 | 
			
		||||
    SDLK_COLON = ':',
 | 
			
		||||
    SDLK_SEMICOLON = ';',
 | 
			
		||||
    SDLK_LESS = '<',
 | 
			
		||||
    SDLK_EQUALS = '=',
 | 
			
		||||
    SDLK_GREATER = '>',
 | 
			
		||||
    SDLK_QUESTION = '?',
 | 
			
		||||
    SDLK_AT = '@',
 | 
			
		||||
    /*
 | 
			
		||||
       Skip uppercase letters
 | 
			
		||||
     */
 | 
			
		||||
    SDLK_LEFTBRACKET = '[',
 | 
			
		||||
    SDLK_BACKSLASH = '\\',
 | 
			
		||||
    SDLK_RIGHTBRACKET = ']',
 | 
			
		||||
    SDLK_CARET = '^',
 | 
			
		||||
    SDLK_UNDERSCORE = '_',
 | 
			
		||||
    SDLK_BACKQUOTE = '`',
 | 
			
		||||
    SDLK_a = 'a',
 | 
			
		||||
    SDLK_b = 'b',
 | 
			
		||||
    SDLK_c = 'c',
 | 
			
		||||
    SDLK_d = 'd',
 | 
			
		||||
    SDLK_e = 'e',
 | 
			
		||||
    SDLK_f = 'f',
 | 
			
		||||
    SDLK_g = 'g',
 | 
			
		||||
    SDLK_h = 'h',
 | 
			
		||||
    SDLK_i = 'i',
 | 
			
		||||
    SDLK_j = 'j',
 | 
			
		||||
    SDLK_k = 'k',
 | 
			
		||||
    SDLK_l = 'l',
 | 
			
		||||
    SDLK_m = 'm',
 | 
			
		||||
    SDLK_n = 'n',
 | 
			
		||||
    SDLK_o = 'o',
 | 
			
		||||
    SDLK_p = 'p',
 | 
			
		||||
    SDLK_q = 'q',
 | 
			
		||||
    SDLK_r = 'r',
 | 
			
		||||
    SDLK_s = 's',
 | 
			
		||||
    SDLK_t = 't',
 | 
			
		||||
    SDLK_u = 'u',
 | 
			
		||||
    SDLK_v = 'v',
 | 
			
		||||
    SDLK_w = 'w',
 | 
			
		||||
    SDLK_x = 'x',
 | 
			
		||||
    SDLK_y = 'y',
 | 
			
		||||
    SDLK_z = 'z',
 | 
			
		||||
 | 
			
		||||
    SDLK_CAPSLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CAPSLOCK),
 | 
			
		||||
 | 
			
		||||
    SDLK_F1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F1),
 | 
			
		||||
    SDLK_F2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F2),
 | 
			
		||||
    SDLK_F3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F3),
 | 
			
		||||
    SDLK_F4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F4),
 | 
			
		||||
    SDLK_F5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F5),
 | 
			
		||||
    SDLK_F6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F6),
 | 
			
		||||
    SDLK_F7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F7),
 | 
			
		||||
    SDLK_F8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F8),
 | 
			
		||||
    SDLK_F9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F9),
 | 
			
		||||
    SDLK_F10 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F10),
 | 
			
		||||
    SDLK_F11 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F11),
 | 
			
		||||
    SDLK_F12 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F12),
 | 
			
		||||
 | 
			
		||||
    SDLK_PRINTSCREEN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRINTSCREEN),
 | 
			
		||||
    SDLK_SCROLLLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SCROLLLOCK),
 | 
			
		||||
    SDLK_PAUSE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAUSE),
 | 
			
		||||
    SDLK_INSERT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_INSERT),
 | 
			
		||||
    SDLK_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HOME),
 | 
			
		||||
    SDLK_PAGEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEUP),
 | 
			
		||||
    SDLK_DELETE = '\177',
 | 
			
		||||
    SDLK_END = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_END),
 | 
			
		||||
    SDLK_PAGEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEDOWN),
 | 
			
		||||
    SDLK_RIGHT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RIGHT),
 | 
			
		||||
    SDLK_LEFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LEFT),
 | 
			
		||||
    SDLK_DOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DOWN),
 | 
			
		||||
    SDLK_UP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UP),
 | 
			
		||||
 | 
			
		||||
    SDLK_NUMLOCKCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_NUMLOCKCLEAR),
 | 
			
		||||
    SDLK_KP_DIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DIVIDE),
 | 
			
		||||
    SDLK_KP_MULTIPLY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MULTIPLY),
 | 
			
		||||
    SDLK_KP_MINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MINUS),
 | 
			
		||||
    SDLK_KP_PLUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUS),
 | 
			
		||||
    SDLK_KP_ENTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_ENTER),
 | 
			
		||||
    SDLK_KP_1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_1),
 | 
			
		||||
    SDLK_KP_2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_2),
 | 
			
		||||
    SDLK_KP_3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_3),
 | 
			
		||||
    SDLK_KP_4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_4),
 | 
			
		||||
    SDLK_KP_5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_5),
 | 
			
		||||
    SDLK_KP_6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_6),
 | 
			
		||||
    SDLK_KP_7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_7),
 | 
			
		||||
    SDLK_KP_8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_8),
 | 
			
		||||
    SDLK_KP_9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_9),
 | 
			
		||||
    SDLK_KP_0 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_0),
 | 
			
		||||
    SDLK_KP_PERIOD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERIOD),
 | 
			
		||||
 | 
			
		||||
    SDLK_APPLICATION = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APPLICATION),
 | 
			
		||||
    SDLK_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_POWER),
 | 
			
		||||
    SDLK_KP_EQUALS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALS),
 | 
			
		||||
    SDLK_F13 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F13),
 | 
			
		||||
    SDLK_F14 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F14),
 | 
			
		||||
    SDLK_F15 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F15),
 | 
			
		||||
    SDLK_F16 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F16),
 | 
			
		||||
    SDLK_F17 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F17),
 | 
			
		||||
    SDLK_F18 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F18),
 | 
			
		||||
    SDLK_F19 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F19),
 | 
			
		||||
    SDLK_F20 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F20),
 | 
			
		||||
    SDLK_F21 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F21),
 | 
			
		||||
    SDLK_F22 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F22),
 | 
			
		||||
    SDLK_F23 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F23),
 | 
			
		||||
    SDLK_F24 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F24),
 | 
			
		||||
    SDLK_EXECUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXECUTE),
 | 
			
		||||
    SDLK_HELP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HELP),
 | 
			
		||||
    SDLK_MENU = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MENU),
 | 
			
		||||
    SDLK_SELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SELECT),
 | 
			
		||||
    SDLK_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_STOP),
 | 
			
		||||
    SDLK_AGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AGAIN),
 | 
			
		||||
    SDLK_UNDO = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UNDO),
 | 
			
		||||
    SDLK_CUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CUT),
 | 
			
		||||
    SDLK_COPY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COPY),
 | 
			
		||||
    SDLK_PASTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PASTE),
 | 
			
		||||
    SDLK_FIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_FIND),
 | 
			
		||||
    SDLK_MUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MUTE),
 | 
			
		||||
    SDLK_VOLUMEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEUP),
 | 
			
		||||
    SDLK_VOLUMEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEDOWN),
 | 
			
		||||
    SDLK_KP_COMMA = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COMMA),
 | 
			
		||||
    SDLK_KP_EQUALSAS400 =
 | 
			
		||||
        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALSAS400),
 | 
			
		||||
 | 
			
		||||
    SDLK_ALTERASE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_ALTERASE),
 | 
			
		||||
    SDLK_SYSREQ = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SYSREQ),
 | 
			
		||||
    SDLK_CANCEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CANCEL),
 | 
			
		||||
    SDLK_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEAR),
 | 
			
		||||
    SDLK_PRIOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRIOR),
 | 
			
		||||
    SDLK_RETURN2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RETURN2),
 | 
			
		||||
    SDLK_SEPARATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SEPARATOR),
 | 
			
		||||
    SDLK_OUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OUT),
 | 
			
		||||
    SDLK_OPER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OPER),
 | 
			
		||||
    SDLK_CLEARAGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEARAGAIN),
 | 
			
		||||
    SDLK_CRSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CRSEL),
 | 
			
		||||
    SDLK_EXSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXSEL),
 | 
			
		||||
 | 
			
		||||
    SDLK_KP_00 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_00),
 | 
			
		||||
    SDLK_KP_000 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_000),
 | 
			
		||||
    SDLK_THOUSANDSSEPARATOR =
 | 
			
		||||
        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_THOUSANDSSEPARATOR),
 | 
			
		||||
    SDLK_DECIMALSEPARATOR =
 | 
			
		||||
        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DECIMALSEPARATOR),
 | 
			
		||||
    SDLK_CURRENCYUNIT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYUNIT),
 | 
			
		||||
    SDLK_CURRENCYSUBUNIT =
 | 
			
		||||
        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYSUBUNIT),
 | 
			
		||||
    SDLK_KP_LEFTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTPAREN),
 | 
			
		||||
    SDLK_KP_RIGHTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTPAREN),
 | 
			
		||||
    SDLK_KP_LEFTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTBRACE),
 | 
			
		||||
    SDLK_KP_RIGHTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTBRACE),
 | 
			
		||||
    SDLK_KP_TAB = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_TAB),
 | 
			
		||||
    SDLK_KP_BACKSPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BACKSPACE),
 | 
			
		||||
    SDLK_KP_A = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_A),
 | 
			
		||||
    SDLK_KP_B = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_B),
 | 
			
		||||
    SDLK_KP_C = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_C),
 | 
			
		||||
    SDLK_KP_D = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_D),
 | 
			
		||||
    SDLK_KP_E = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_E),
 | 
			
		||||
    SDLK_KP_F = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_F),
 | 
			
		||||
    SDLK_KP_XOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_XOR),
 | 
			
		||||
    SDLK_KP_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_POWER),
 | 
			
		||||
    SDLK_KP_PERCENT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERCENT),
 | 
			
		||||
    SDLK_KP_LESS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LESS),
 | 
			
		||||
    SDLK_KP_GREATER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_GREATER),
 | 
			
		||||
    SDLK_KP_AMPERSAND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AMPERSAND),
 | 
			
		||||
    SDLK_KP_DBLAMPERSAND =
 | 
			
		||||
        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLAMPERSAND),
 | 
			
		||||
    SDLK_KP_VERTICALBAR =
 | 
			
		||||
        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_VERTICALBAR),
 | 
			
		||||
    SDLK_KP_DBLVERTICALBAR =
 | 
			
		||||
        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLVERTICALBAR),
 | 
			
		||||
    SDLK_KP_COLON = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COLON),
 | 
			
		||||
    SDLK_KP_HASH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HASH),
 | 
			
		||||
    SDLK_KP_SPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_SPACE),
 | 
			
		||||
    SDLK_KP_AT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AT),
 | 
			
		||||
    SDLK_KP_EXCLAM = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EXCLAM),
 | 
			
		||||
    SDLK_KP_MEMSTORE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSTORE),
 | 
			
		||||
    SDLK_KP_MEMRECALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMRECALL),
 | 
			
		||||
    SDLK_KP_MEMCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMCLEAR),
 | 
			
		||||
    SDLK_KP_MEMADD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMADD),
 | 
			
		||||
    SDLK_KP_MEMSUBTRACT =
 | 
			
		||||
        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSUBTRACT),
 | 
			
		||||
    SDLK_KP_MEMMULTIPLY =
 | 
			
		||||
        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMMULTIPLY),
 | 
			
		||||
    SDLK_KP_MEMDIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMDIVIDE),
 | 
			
		||||
    SDLK_KP_PLUSMINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUSMINUS),
 | 
			
		||||
    SDLK_KP_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEAR),
 | 
			
		||||
    SDLK_KP_CLEARENTRY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEARENTRY),
 | 
			
		||||
    SDLK_KP_BINARY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BINARY),
 | 
			
		||||
    SDLK_KP_OCTAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_OCTAL),
 | 
			
		||||
    SDLK_KP_DECIMAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DECIMAL),
 | 
			
		||||
    SDLK_KP_HEXADECIMAL =
 | 
			
		||||
        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HEXADECIMAL),
 | 
			
		||||
 | 
			
		||||
    SDLK_LCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LCTRL),
 | 
			
		||||
    SDLK_LSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LSHIFT),
 | 
			
		||||
    SDLK_LALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LALT),
 | 
			
		||||
    SDLK_LGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LGUI),
 | 
			
		||||
    SDLK_RCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RCTRL),
 | 
			
		||||
    SDLK_RSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RSHIFT),
 | 
			
		||||
    SDLK_RALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RALT),
 | 
			
		||||
    SDLK_RGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RGUI),
 | 
			
		||||
 | 
			
		||||
    SDLK_MODE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MODE),
 | 
			
		||||
 | 
			
		||||
    SDLK_AUDIONEXT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIONEXT),
 | 
			
		||||
    SDLK_AUDIOPREV = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPREV),
 | 
			
		||||
    SDLK_AUDIOSTOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOSTOP),
 | 
			
		||||
    SDLK_AUDIOPLAY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPLAY),
 | 
			
		||||
    SDLK_AUDIOMUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOMUTE),
 | 
			
		||||
    SDLK_MEDIASELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MEDIASELECT),
 | 
			
		||||
    SDLK_WWW = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_WWW),
 | 
			
		||||
    SDLK_MAIL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MAIL),
 | 
			
		||||
    SDLK_CALCULATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CALCULATOR),
 | 
			
		||||
    SDLK_COMPUTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COMPUTER),
 | 
			
		||||
    SDLK_AC_SEARCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_SEARCH),
 | 
			
		||||
    SDLK_AC_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_HOME),
 | 
			
		||||
    SDLK_AC_BACK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BACK),
 | 
			
		||||
    SDLK_AC_FORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_FORWARD),
 | 
			
		||||
    SDLK_AC_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_STOP),
 | 
			
		||||
    SDLK_AC_REFRESH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_REFRESH),
 | 
			
		||||
    SDLK_AC_BOOKMARKS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BOOKMARKS),
 | 
			
		||||
 | 
			
		||||
    SDLK_BRIGHTNESSDOWN =
 | 
			
		||||
        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSDOWN),
 | 
			
		||||
    SDLK_BRIGHTNESSUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSUP),
 | 
			
		||||
    SDLK_DISPLAYSWITCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DISPLAYSWITCH),
 | 
			
		||||
    SDLK_KBDILLUMTOGGLE =
 | 
			
		||||
        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMTOGGLE),
 | 
			
		||||
    SDLK_KBDILLUMDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMDOWN),
 | 
			
		||||
    SDLK_KBDILLUMUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMUP),
 | 
			
		||||
    SDLK_EJECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EJECT),
 | 
			
		||||
    SDLK_SLEEP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SLEEP)
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Enumeration of valid key mods (possibly OR'd together).
 | 
			
		||||
 */
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    KMOD_NONE = 0x0000,
 | 
			
		||||
    KMOD_LSHIFT = 0x0001,
 | 
			
		||||
    KMOD_RSHIFT = 0x0002,
 | 
			
		||||
    KMOD_LCTRL = 0x0040,
 | 
			
		||||
    KMOD_RCTRL = 0x0080,
 | 
			
		||||
    KMOD_LALT = 0x0100,
 | 
			
		||||
    KMOD_RALT = 0x0200,
 | 
			
		||||
    KMOD_LGUI = 0x0400,
 | 
			
		||||
    KMOD_RGUI = 0x0800,
 | 
			
		||||
    KMOD_NUM = 0x1000,
 | 
			
		||||
    KMOD_CAPS = 0x2000,
 | 
			
		||||
    KMOD_MODE = 0x4000,
 | 
			
		||||
    KMOD_RESERVED = 0x8000
 | 
			
		||||
} SDL_Keymod;
 | 
			
		||||
 | 
			
		||||
#define KMOD_CTRL   (KMOD_LCTRL|KMOD_RCTRL)
 | 
			
		||||
#define KMOD_SHIFT  (KMOD_LSHIFT|KMOD_RSHIFT)
 | 
			
		||||
#define KMOD_ALT    (KMOD_LALT|KMOD_RALT)
 | 
			
		||||
#define KMOD_GUI    (KMOD_LGUI|KMOD_RGUI)
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_keycode_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
							
								
								
									
										81
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_loadso.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_loadso.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,81 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_loadso.h
 | 
			
		||||
 *
 | 
			
		||||
 *  System dependent library loading routines
 | 
			
		||||
 *
 | 
			
		||||
 *  Some things to keep in mind:
 | 
			
		||||
 *  \li These functions only work on C function names.  Other languages may
 | 
			
		||||
 *      have name mangling and intrinsic language support that varies from
 | 
			
		||||
 *      compiler to compiler.
 | 
			
		||||
 *  \li Make sure you declare your function pointers with the same calling
 | 
			
		||||
 *      convention as the actual library function.  Your code will crash
 | 
			
		||||
 *      mysteriously if you do not do this.
 | 
			
		||||
 *  \li Avoid namespace collisions.  If you load a symbol from the library,
 | 
			
		||||
 *      it is not defined whether or not it goes into the global symbol
 | 
			
		||||
 *      namespace for the application.  If it does and it conflicts with
 | 
			
		||||
 *      symbols in your code or other shared libraries, you will not get
 | 
			
		||||
 *      the results you expect. :)
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_loadso_h
 | 
			
		||||
#define _SDL_loadso_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
#include "SDL_error.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function dynamically loads a shared object and returns a pointer
 | 
			
		||||
 *  to the object handle (or NULL if there was an error).
 | 
			
		||||
 *  The 'sofile' parameter is a system dependent name of the object file.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void *SDLCALL SDL_LoadObject(const char *sofile);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Given an object handle, this function looks up the address of the
 | 
			
		||||
 *  named function in the shared object and returns it.  This address
 | 
			
		||||
 *  is no longer valid after calling SDL_UnloadObject().
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void *SDLCALL SDL_LoadFunction(void *handle,
 | 
			
		||||
                                               const char *name);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Unload a shared object from memory.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_UnloadObject(void *handle);
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_loadso_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
							
								
								
									
										211
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_log.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										211
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_log.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,211 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_log.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Simple log messages with categories and priorities.
 | 
			
		||||
 *
 | 
			
		||||
 *  By default logs are quiet, but if you're debugging SDL you might want:
 | 
			
		||||
 *
 | 
			
		||||
 *      SDL_LogSetAllPriority(SDL_LOG_PRIORITY_WARN);
 | 
			
		||||
 *
 | 
			
		||||
 *  Here's where the messages go on different platforms:
 | 
			
		||||
 *      Windows: debug output stream
 | 
			
		||||
 *      Android: log output
 | 
			
		||||
 *      Others: standard error output (stderr)
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_log_h
 | 
			
		||||
#define _SDL_log_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief The maximum size of a log message
 | 
			
		||||
 *
 | 
			
		||||
 *  Messages longer than the maximum size will be truncated
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_MAX_LOG_MESSAGE 4096
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief The predefined log categories
 | 
			
		||||
 *
 | 
			
		||||
 *  By default the application category is enabled at the INFO level,
 | 
			
		||||
 *  the assert category is enabled at the WARN level, test is enabled
 | 
			
		||||
 *  at the VERBOSE level and all other categories are enabled at the
 | 
			
		||||
 *  CRITICAL level.
 | 
			
		||||
 */
 | 
			
		||||
enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_LOG_CATEGORY_APPLICATION,
 | 
			
		||||
    SDL_LOG_CATEGORY_ERROR,
 | 
			
		||||
    SDL_LOG_CATEGORY_ASSERT,
 | 
			
		||||
    SDL_LOG_CATEGORY_SYSTEM,
 | 
			
		||||
    SDL_LOG_CATEGORY_AUDIO,
 | 
			
		||||
    SDL_LOG_CATEGORY_VIDEO,
 | 
			
		||||
    SDL_LOG_CATEGORY_RENDER,
 | 
			
		||||
    SDL_LOG_CATEGORY_INPUT,
 | 
			
		||||
    SDL_LOG_CATEGORY_TEST,
 | 
			
		||||
 | 
			
		||||
    /* Reserved for future SDL library use */
 | 
			
		||||
    SDL_LOG_CATEGORY_RESERVED1,
 | 
			
		||||
    SDL_LOG_CATEGORY_RESERVED2,
 | 
			
		||||
    SDL_LOG_CATEGORY_RESERVED3,
 | 
			
		||||
    SDL_LOG_CATEGORY_RESERVED4,
 | 
			
		||||
    SDL_LOG_CATEGORY_RESERVED5,
 | 
			
		||||
    SDL_LOG_CATEGORY_RESERVED6,
 | 
			
		||||
    SDL_LOG_CATEGORY_RESERVED7,
 | 
			
		||||
    SDL_LOG_CATEGORY_RESERVED8,
 | 
			
		||||
    SDL_LOG_CATEGORY_RESERVED9,
 | 
			
		||||
    SDL_LOG_CATEGORY_RESERVED10,
 | 
			
		||||
 | 
			
		||||
    /* Beyond this point is reserved for application use, e.g.
 | 
			
		||||
       enum {
 | 
			
		||||
           MYAPP_CATEGORY_AWESOME1 = SDL_LOG_CATEGORY_CUSTOM,
 | 
			
		||||
           MYAPP_CATEGORY_AWESOME2,
 | 
			
		||||
           MYAPP_CATEGORY_AWESOME3,
 | 
			
		||||
           ...
 | 
			
		||||
       };
 | 
			
		||||
     */
 | 
			
		||||
    SDL_LOG_CATEGORY_CUSTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief The predefined log priorities
 | 
			
		||||
 */
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_LOG_PRIORITY_VERBOSE = 1,
 | 
			
		||||
    SDL_LOG_PRIORITY_DEBUG,
 | 
			
		||||
    SDL_LOG_PRIORITY_INFO,
 | 
			
		||||
    SDL_LOG_PRIORITY_WARN,
 | 
			
		||||
    SDL_LOG_PRIORITY_ERROR,
 | 
			
		||||
    SDL_LOG_PRIORITY_CRITICAL,
 | 
			
		||||
    SDL_NUM_LOG_PRIORITIES
 | 
			
		||||
} SDL_LogPriority;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Set the priority of all log categories
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_LogSetAllPriority(SDL_LogPriority priority);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Set the priority of a particular log category
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_LogSetPriority(int category,
 | 
			
		||||
                                                SDL_LogPriority priority);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Get the priority of a particular log category
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_LogPriority SDLCALL SDL_LogGetPriority(int category);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Reset all priorities to default.
 | 
			
		||||
 *
 | 
			
		||||
 *  \note This is called in SDL_Quit().
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_LogResetPriorities(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Log a message with SDL_LOG_CATEGORY_APPLICATION and SDL_LOG_PRIORITY_INFO
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Log a message with SDL_LOG_PRIORITY_VERBOSE
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_LogVerbose(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Log a message with SDL_LOG_PRIORITY_DEBUG
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_LogDebug(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Log a message with SDL_LOG_PRIORITY_INFO
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_LogInfo(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Log a message with SDL_LOG_PRIORITY_WARN
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_LogWarn(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Log a message with SDL_LOG_PRIORITY_ERROR
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_LogError(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Log a message with SDL_LOG_PRIORITY_CRITICAL
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_LogCritical(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Log a message with the specified category and priority.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_LogMessage(int category,
 | 
			
		||||
                                            SDL_LogPriority priority,
 | 
			
		||||
                                            SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(3);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Log a message with the specified category and priority.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_LogMessageV(int category,
 | 
			
		||||
                                             SDL_LogPriority priority,
 | 
			
		||||
                                             const char *fmt, va_list ap);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief The prototype for the log output function
 | 
			
		||||
 */
 | 
			
		||||
typedef void (*SDL_LogOutputFunction)(void *userdata, int category, SDL_LogPriority priority, const char *message);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Get the current log output function.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_LogGetOutputFunction(SDL_LogOutputFunction *callback, void **userdata);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief This function allows you to replace the default log output
 | 
			
		||||
 *         function with one of your own.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_LogSetOutputFunction(SDL_LogOutputFunction callback, void *userdata);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_log_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
							
								
								
									
										161
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_main.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										161
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_main.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,161 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_main_h
 | 
			
		||||
#define _SDL_main_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_main.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Redefine main() on some platforms so that it is called by SDL.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef SDL_MAIN_HANDLED
 | 
			
		||||
#if defined(__WIN32__)
 | 
			
		||||
/* On Windows SDL provides WinMain(), which parses the command line and passes
 | 
			
		||||
   the arguments to your main function.
 | 
			
		||||
 | 
			
		||||
   If you provide your own WinMain(), you may define SDL_MAIN_HANDLED
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_MAIN_AVAILABLE
 | 
			
		||||
 | 
			
		||||
#elif defined(__WINRT__)
 | 
			
		||||
/* On WinRT, SDL provides a main function that initializes CoreApplication,
 | 
			
		||||
   creating an instance of IFrameworkView in the process.
 | 
			
		||||
 | 
			
		||||
   Please note that #include'ing SDL_main.h is not enough to get a main()
 | 
			
		||||
   function working.  In non-XAML apps, the file,
 | 
			
		||||
   src/main/winrt/SDL_WinRT_main_NonXAML.cpp, or a copy of it, must be compiled
 | 
			
		||||
   into the app itself.  In XAML apps, the function, SDL_WinRTRunApp must be
 | 
			
		||||
   called, with a pointer to the Direct3D-hosted XAML control passed in.
 | 
			
		||||
*/
 | 
			
		||||
#define SDL_MAIN_NEEDED
 | 
			
		||||
 | 
			
		||||
#elif defined(__IPHONEOS__)
 | 
			
		||||
/* On iOS SDL provides a main function that creates an application delegate
 | 
			
		||||
   and starts the iOS application run loop.
 | 
			
		||||
 | 
			
		||||
   See src/video/uikit/SDL_uikitappdelegate.m for more details.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_MAIN_NEEDED
 | 
			
		||||
 | 
			
		||||
#elif defined(__ANDROID__)
 | 
			
		||||
/* On Android SDL provides a Java class in SDLActivity.java that is the
 | 
			
		||||
   main activity entry point.
 | 
			
		||||
 | 
			
		||||
   See README-android.txt for more details on extending that class.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_MAIN_NEEDED
 | 
			
		||||
 | 
			
		||||
#elif defined(__NACL__)
 | 
			
		||||
/* On NACL we use ppapi_simple to set up the application helper code,
 | 
			
		||||
   then wait for the first PSE_INSTANCE_DIDCHANGEVIEW event before 
 | 
			
		||||
   starting the user main function.
 | 
			
		||||
   All user code is run in a separate thread by ppapi_simple, thus 
 | 
			
		||||
   allowing for blocking io to take place via nacl_io
 | 
			
		||||
*/
 | 
			
		||||
#define SDL_MAIN_NEEDED
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
#endif /* SDL_MAIN_HANDLED */
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
#define C_LINKAGE   "C"
 | 
			
		||||
#else
 | 
			
		||||
#define C_LINKAGE
 | 
			
		||||
#endif /* __cplusplus */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_main.h
 | 
			
		||||
 *
 | 
			
		||||
 *  The application's main() function must be called with C linkage,
 | 
			
		||||
 *  and should be declared like this:
 | 
			
		||||
 *  \code
 | 
			
		||||
 *  #ifdef __cplusplus
 | 
			
		||||
 *  extern "C"
 | 
			
		||||
 *  #endif
 | 
			
		||||
 *  int main(int argc, char *argv[])
 | 
			
		||||
 *  {
 | 
			
		||||
 *  }
 | 
			
		||||
 *  \endcode
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#if defined(SDL_MAIN_NEEDED) || defined(SDL_MAIN_AVAILABLE)
 | 
			
		||||
#define main    SDL_main
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  The prototype for the application's main() function
 | 
			
		||||
 */
 | 
			
		||||
extern C_LINKAGE int SDL_main(int argc, char *argv[]);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This is called by the real SDL main function to let the rest of the
 | 
			
		||||
 *  library know that initialization was done properly.
 | 
			
		||||
 *
 | 
			
		||||
 *  Calling this yourself without knowing what you're doing can cause
 | 
			
		||||
 *  crashes and hard to diagnose problems with your application.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_SetMainReady(void);
 | 
			
		||||
 | 
			
		||||
#ifdef __WIN32__
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This can be called to set the application class at startup
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_RegisterApp(char *name, Uint32 style,
 | 
			
		||||
                                            void *hInst);
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_UnregisterApp(void);
 | 
			
		||||
 | 
			
		||||
#endif /* __WIN32__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef __WINRT__
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Initializes and launches an SDL/WinRT application.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param mainFunction The SDL app's C-style main().
 | 
			
		||||
 *  \param reserved Reserved for future use; should be NULL
 | 
			
		||||
 *  \return 0 on success, -1 on failure.  On failure, use SDL_GetError to retrieve more
 | 
			
		||||
 *      information on the failure.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_WinRTRunApp(int (*mainFunction)(int, char **), void * reserved);
 | 
			
		||||
 | 
			
		||||
#endif /* __WINRT__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_main_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
							
								
								
									
										144
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_messagebox.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										144
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_messagebox.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,144 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_messagebox_h
 | 
			
		||||
#define _SDL_messagebox_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
#include "SDL_video.h"      /* For SDL_Window */
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief SDL_MessageBox flags. If supported will display warning icon, etc.
 | 
			
		||||
 */
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_MESSAGEBOX_ERROR        = 0x00000010,   /**< error dialog */
 | 
			
		||||
    SDL_MESSAGEBOX_WARNING      = 0x00000020,   /**< warning dialog */
 | 
			
		||||
    SDL_MESSAGEBOX_INFORMATION  = 0x00000040    /**< informational dialog */
 | 
			
		||||
} SDL_MessageBoxFlags;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Flags for SDL_MessageBoxButtonData.
 | 
			
		||||
 */
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT = 0x00000001,  /**< Marks the default button when return is hit */
 | 
			
		||||
    SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT = 0x00000002   /**< Marks the default button when escape is hit */
 | 
			
		||||
} SDL_MessageBoxButtonFlags;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Individual button data.
 | 
			
		||||
 */
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
    Uint32 flags;       /**< ::SDL_MessageBoxButtonFlags */
 | 
			
		||||
    int buttonid;       /**< User defined button id (value returned via SDL_ShowMessageBox) */
 | 
			
		||||
    const char * text;  /**< The UTF-8 button text */
 | 
			
		||||
} SDL_MessageBoxButtonData;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief RGB value used in a message box color scheme
 | 
			
		||||
 */
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
    Uint8 r, g, b;
 | 
			
		||||
} SDL_MessageBoxColor;
 | 
			
		||||
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_MESSAGEBOX_COLOR_BACKGROUND,
 | 
			
		||||
    SDL_MESSAGEBOX_COLOR_TEXT,
 | 
			
		||||
    SDL_MESSAGEBOX_COLOR_BUTTON_BORDER,
 | 
			
		||||
    SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND,
 | 
			
		||||
    SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED,
 | 
			
		||||
    SDL_MESSAGEBOX_COLOR_MAX
 | 
			
		||||
} SDL_MessageBoxColorType;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief A set of colors to use for message box dialogs
 | 
			
		||||
 */
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
    SDL_MessageBoxColor colors[SDL_MESSAGEBOX_COLOR_MAX];
 | 
			
		||||
} SDL_MessageBoxColorScheme;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief MessageBox structure containing title, text, window, etc.
 | 
			
		||||
 */
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
    Uint32 flags;                       /**< ::SDL_MessageBoxFlags */
 | 
			
		||||
    SDL_Window *window;                 /**< Parent window, can be NULL */
 | 
			
		||||
    const char *title;                  /**< UTF-8 title */
 | 
			
		||||
    const char *message;                /**< UTF-8 message text */
 | 
			
		||||
 | 
			
		||||
    int numbuttons;
 | 
			
		||||
    const SDL_MessageBoxButtonData *buttons;
 | 
			
		||||
 | 
			
		||||
    const SDL_MessageBoxColorScheme *colorScheme;   /**< ::SDL_MessageBoxColorScheme, can be NULL to use system settings */
 | 
			
		||||
} SDL_MessageBoxData;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Create a modal message box.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param messageboxdata The SDL_MessageBoxData structure with title, text, etc.
 | 
			
		||||
 *  \param buttonid The pointer to which user id of hit button should be copied.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return -1 on error, otherwise 0 and buttonid contains user id of button
 | 
			
		||||
 *          hit or -1 if dialog was closed.
 | 
			
		||||
 *
 | 
			
		||||
 *  \note This function should be called on the thread that created the parent
 | 
			
		||||
 *        window, or on the main thread if the messagebox has no parent.  It will
 | 
			
		||||
 *        block execution of that thread until the user clicks a button or
 | 
			
		||||
 *        closes the messagebox.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Create a simple modal message box
 | 
			
		||||
 *
 | 
			
		||||
 *  \param flags    ::SDL_MessageBoxFlags
 | 
			
		||||
 *  \param title    UTF-8 title text
 | 
			
		||||
 *  \param message  UTF-8 message text
 | 
			
		||||
 *  \param window   The parent window, or NULL for no parent
 | 
			
		||||
 *
 | 
			
		||||
 *  \return 0 on success, -1 on error
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_ShowMessageBox
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_ShowSimpleMessageBox(Uint32 flags, const char *title, const char *message, SDL_Window *window);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_messagebox_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
							
								
								
									
										300
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_mouse.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										300
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_mouse.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,300 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_mouse.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Include file for SDL mouse event handling.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_mouse_h
 | 
			
		||||
#define _SDL_mouse_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
#include "SDL_error.h"
 | 
			
		||||
#include "SDL_video.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
typedef struct SDL_Cursor SDL_Cursor;   /* Implementation dependent */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Cursor types for SDL_CreateSystemCursor.
 | 
			
		||||
 */
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_SYSTEM_CURSOR_ARROW,     /**< Arrow */
 | 
			
		||||
    SDL_SYSTEM_CURSOR_IBEAM,     /**< I-beam */
 | 
			
		||||
    SDL_SYSTEM_CURSOR_WAIT,      /**< Wait */
 | 
			
		||||
    SDL_SYSTEM_CURSOR_CROSSHAIR, /**< Crosshair */
 | 
			
		||||
    SDL_SYSTEM_CURSOR_WAITARROW, /**< Small wait cursor (or Wait if not available) */
 | 
			
		||||
    SDL_SYSTEM_CURSOR_SIZENWSE,  /**< Double arrow pointing northwest and southeast */
 | 
			
		||||
    SDL_SYSTEM_CURSOR_SIZENESW,  /**< Double arrow pointing northeast and southwest */
 | 
			
		||||
    SDL_SYSTEM_CURSOR_SIZEWE,    /**< Double arrow pointing west and east */
 | 
			
		||||
    SDL_SYSTEM_CURSOR_SIZENS,    /**< Double arrow pointing north and south */
 | 
			
		||||
    SDL_SYSTEM_CURSOR_SIZEALL,   /**< Four pointed arrow pointing north, south, east, and west */
 | 
			
		||||
    SDL_SYSTEM_CURSOR_NO,        /**< Slashed circle or crossbones */
 | 
			
		||||
    SDL_SYSTEM_CURSOR_HAND,      /**< Hand */
 | 
			
		||||
    SDL_NUM_SYSTEM_CURSORS
 | 
			
		||||
} SDL_SystemCursor;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Scroll direction types for the Scroll event
 | 
			
		||||
 */
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_MOUSEWHEEL_NORMAL,    /**< The scroll direction is normal */
 | 
			
		||||
    SDL_MOUSEWHEEL_FLIPPED    /**< The scroll direction is flipped / natural */
 | 
			
		||||
} SDL_MouseWheelDirection;
 | 
			
		||||
 | 
			
		||||
/* Function prototypes */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Get the window which currently has mouse focus.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_Window * SDLCALL SDL_GetMouseFocus(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Retrieve the current state of the mouse.
 | 
			
		||||
 *
 | 
			
		||||
 *  The current button state is returned as a button bitmask, which can
 | 
			
		||||
 *  be tested using the SDL_BUTTON(X) macros, and x and y are set to the
 | 
			
		||||
 *  mouse cursor position relative to the focus window for the currently
 | 
			
		||||
 *  selected mouse.  You can pass NULL for either x or y.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC Uint32 SDLCALL SDL_GetMouseState(int *x, int *y);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Get the current state of the mouse, in relation to the desktop
 | 
			
		||||
 *
 | 
			
		||||
 *  This works just like SDL_GetMouseState(), but the coordinates will be
 | 
			
		||||
 *  reported relative to the top-left of the desktop. This can be useful if
 | 
			
		||||
 *  you need to track the mouse outside of a specific window and
 | 
			
		||||
 *  SDL_CaptureMouse() doesn't fit your needs. For example, it could be
 | 
			
		||||
 *  useful if you need to track the mouse while dragging a window, where
 | 
			
		||||
 *  coordinates relative to a window might not be in sync at all times.
 | 
			
		||||
 *
 | 
			
		||||
 *  \note SDL_GetMouseState() returns the mouse position as SDL understands
 | 
			
		||||
 *        it from the last pump of the event queue. This function, however,
 | 
			
		||||
 *        queries the OS for the current mouse position, and as such, might
 | 
			
		||||
 *        be a slightly less efficient function. Unless you know what you're
 | 
			
		||||
 *        doing and have a good reason to use this function, you probably want
 | 
			
		||||
 *        SDL_GetMouseState() instead.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param x Returns the current X coord, relative to the desktop. Can be NULL.
 | 
			
		||||
 *  \param y Returns the current Y coord, relative to the desktop. Can be NULL.
 | 
			
		||||
 *  \return The current button state as a bitmask, which can be tested using the SDL_BUTTON(X) macros.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_GetMouseState
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC Uint32 SDLCALL SDL_GetGlobalMouseState(int *x, int *y);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Retrieve the relative state of the mouse.
 | 
			
		||||
 *
 | 
			
		||||
 *  The current button state is returned as a button bitmask, which can
 | 
			
		||||
 *  be tested using the SDL_BUTTON(X) macros, and x and y are set to the
 | 
			
		||||
 *  mouse deltas since the last call to SDL_GetRelativeMouseState().
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC Uint32 SDLCALL SDL_GetRelativeMouseState(int *x, int *y);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Moves the mouse to the given position within the window.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param window The window to move the mouse into, or NULL for the current mouse focus
 | 
			
		||||
 *  \param x The x coordinate within the window
 | 
			
		||||
 *  \param y The y coordinate within the window
 | 
			
		||||
 *
 | 
			
		||||
 *  \note This function generates a mouse motion event
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_WarpMouseInWindow(SDL_Window * window,
 | 
			
		||||
                                                   int x, int y);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Moves the mouse to the given position in global screen space.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param x The x coordinate
 | 
			
		||||
 *  \param y The y coordinate
 | 
			
		||||
 *  \return 0 on success, -1 on error (usually: unsupported by a platform).
 | 
			
		||||
 *
 | 
			
		||||
 *  \note This function generates a mouse motion event
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_WarpMouseGlobal(int x, int y);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Set relative mouse mode.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param enabled Whether or not to enable relative mode
 | 
			
		||||
 *
 | 
			
		||||
 *  \return 0 on success, or -1 if relative mode is not supported.
 | 
			
		||||
 *
 | 
			
		||||
 *  While the mouse is in relative mode, the cursor is hidden, and the
 | 
			
		||||
 *  driver will try to report continuous motion in the current window.
 | 
			
		||||
 *  Only relative motion events will be delivered, the mouse position
 | 
			
		||||
 *  will not change.
 | 
			
		||||
 *
 | 
			
		||||
 *  \note This function will flush any pending mouse motion.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_GetRelativeMouseMode()
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_SetRelativeMouseMode(SDL_bool enabled);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Capture the mouse, to track input outside an SDL window.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param enabled Whether or not to enable capturing
 | 
			
		||||
 *
 | 
			
		||||
 *  Capturing enables your app to obtain mouse events globally, instead of
 | 
			
		||||
 *  just within your window. Not all video targets support this function.
 | 
			
		||||
 *  When capturing is enabled, the current window will get all mouse events,
 | 
			
		||||
 *  but unlike relative mode, no change is made to the cursor and it is
 | 
			
		||||
 *  not restrained to your window.
 | 
			
		||||
 *
 | 
			
		||||
 *  This function may also deny mouse input to other windows--both those in
 | 
			
		||||
 *  your application and others on the system--so you should use this
 | 
			
		||||
 *  function sparingly, and in small bursts. For example, you might want to
 | 
			
		||||
 *  track the mouse while the user is dragging something, until the user
 | 
			
		||||
 *  releases a mouse button. It is not recommended that you capture the mouse
 | 
			
		||||
 *  for long periods of time, such as the entire time your app is running.
 | 
			
		||||
 *
 | 
			
		||||
 *  While captured, mouse events still report coordinates relative to the
 | 
			
		||||
 *  current (foreground) window, but those coordinates may be outside the
 | 
			
		||||
 *  bounds of the window (including negative values). Capturing is only
 | 
			
		||||
 *  allowed for the foreground window. If the window loses focus while
 | 
			
		||||
 *  capturing, the capture will be disabled automatically.
 | 
			
		||||
 *
 | 
			
		||||
 *  While capturing is enabled, the current window will have the
 | 
			
		||||
 *  SDL_WINDOW_MOUSE_CAPTURE flag set.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return 0 on success, or -1 if not supported.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_CaptureMouse(SDL_bool enabled);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Query whether relative mouse mode is enabled.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_SetRelativeMouseMode()
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_GetRelativeMouseMode(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Create a cursor, using the specified bitmap data and
 | 
			
		||||
 *         mask (in MSB format).
 | 
			
		||||
 *
 | 
			
		||||
 *  The cursor width must be a multiple of 8 bits.
 | 
			
		||||
 *
 | 
			
		||||
 *  The cursor is created in black and white according to the following:
 | 
			
		||||
 *  <table>
 | 
			
		||||
 *  <tr><td> data </td><td> mask </td><td> resulting pixel on screen </td></tr>
 | 
			
		||||
 *  <tr><td>  0   </td><td>  1   </td><td> White </td></tr>
 | 
			
		||||
 *  <tr><td>  1   </td><td>  1   </td><td> Black </td></tr>
 | 
			
		||||
 *  <tr><td>  0   </td><td>  0   </td><td> Transparent </td></tr>
 | 
			
		||||
 *  <tr><td>  1   </td><td>  0   </td><td> Inverted color if possible, black
 | 
			
		||||
 *                                         if not. </td></tr>
 | 
			
		||||
 *  </table>
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_FreeCursor()
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateCursor(const Uint8 * data,
 | 
			
		||||
                                                     const Uint8 * mask,
 | 
			
		||||
                                                     int w, int h, int hot_x,
 | 
			
		||||
                                                     int hot_y);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Create a color cursor.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_FreeCursor()
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateColorCursor(SDL_Surface *surface,
 | 
			
		||||
                                                          int hot_x,
 | 
			
		||||
                                                          int hot_y);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Create a system cursor.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_FreeCursor()
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateSystemCursor(SDL_SystemCursor id);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Set the active cursor.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_SetCursor(SDL_Cursor * cursor);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Return the active cursor.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetCursor(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Return the default cursor.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetDefaultCursor(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Frees a cursor created with SDL_CreateCursor().
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_CreateCursor()
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_FreeCursor(SDL_Cursor * cursor);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Toggle whether or not the cursor is shown.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param toggle 1 to show the cursor, 0 to hide it, -1 to query the current
 | 
			
		||||
 *                state.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return 1 if the cursor is shown, or 0 if the cursor is hidden.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Used as a mask when testing buttons in buttonstate.
 | 
			
		||||
 *   - Button 1:  Left mouse button
 | 
			
		||||
 *   - Button 2:  Middle mouse button
 | 
			
		||||
 *   - Button 3:  Right mouse button
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_BUTTON(X)       (1 << ((X)-1))
 | 
			
		||||
#define SDL_BUTTON_LEFT     1
 | 
			
		||||
#define SDL_BUTTON_MIDDLE   2
 | 
			
		||||
#define SDL_BUTTON_RIGHT    3
 | 
			
		||||
#define SDL_BUTTON_X1       4
 | 
			
		||||
#define SDL_BUTTON_X2       5
 | 
			
		||||
#define SDL_BUTTON_LMASK    SDL_BUTTON(SDL_BUTTON_LEFT)
 | 
			
		||||
#define SDL_BUTTON_MMASK    SDL_BUTTON(SDL_BUTTON_MIDDLE)
 | 
			
		||||
#define SDL_BUTTON_RMASK    SDL_BUTTON(SDL_BUTTON_RIGHT)
 | 
			
		||||
#define SDL_BUTTON_X1MASK   SDL_BUTTON(SDL_BUTTON_X1)
 | 
			
		||||
#define SDL_BUTTON_X2MASK   SDL_BUTTON(SDL_BUTTON_X2)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_mouse_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
							
								
								
									
										251
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_mutex.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										251
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_mutex.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,251 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_mutex_h
 | 
			
		||||
#define _SDL_mutex_h
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_mutex.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Functions to provide thread synchronization primitives.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
#include "SDL_error.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Synchronization functions which can time out return this value
 | 
			
		||||
 *  if they time out.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_MUTEX_TIMEDOUT  1
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This is the timeout value which corresponds to never time out.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_MUTEX_MAXWAIT   (~(Uint32)0)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name Mutex functions
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
 | 
			
		||||
/* The SDL mutex structure, defined in SDL_sysmutex.c */
 | 
			
		||||
struct SDL_mutex;
 | 
			
		||||
typedef struct SDL_mutex SDL_mutex;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Create a mutex, initialized unlocked.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_mutex *SDLCALL SDL_CreateMutex(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Lock the mutex.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return 0, or -1 on error.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_mutexP(m)   SDL_LockMutex(m)
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_LockMutex(SDL_mutex * mutex);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Try to lock the mutex
 | 
			
		||||
 *
 | 
			
		||||
 *  \return 0, SDL_MUTEX_TIMEDOUT, or -1 on error
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_TryLockMutex(SDL_mutex * mutex);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Unlock the mutex.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return 0, or -1 on error.
 | 
			
		||||
 *
 | 
			
		||||
 *  \warning It is an error to unlock a mutex that has not been locked by
 | 
			
		||||
 *           the current thread, and doing so results in undefined behavior.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_mutexV(m)   SDL_UnlockMutex(m)
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_UnlockMutex(SDL_mutex * mutex);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Destroy a mutex.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_DestroyMutex(SDL_mutex * mutex);
 | 
			
		||||
 | 
			
		||||
/* @} *//* Mutex functions */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name Semaphore functions
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
 | 
			
		||||
/* The SDL semaphore structure, defined in SDL_syssem.c */
 | 
			
		||||
struct SDL_semaphore;
 | 
			
		||||
typedef struct SDL_semaphore SDL_sem;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Create a semaphore, initialized with value, returns NULL on failure.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_sem *SDLCALL SDL_CreateSemaphore(Uint32 initial_value);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Destroy a semaphore.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_DestroySemaphore(SDL_sem * sem);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function suspends the calling thread until the semaphore pointed
 | 
			
		||||
 *  to by \c sem has a positive count. It then atomically decreases the
 | 
			
		||||
 *  semaphore count.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_SemWait(SDL_sem * sem);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Non-blocking variant of SDL_SemWait().
 | 
			
		||||
 *
 | 
			
		||||
 *  \return 0 if the wait succeeds, ::SDL_MUTEX_TIMEDOUT if the wait would
 | 
			
		||||
 *          block, and -1 on error.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_SemTryWait(SDL_sem * sem);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Variant of SDL_SemWait() with a timeout in milliseconds.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return 0 if the wait succeeds, ::SDL_MUTEX_TIMEDOUT if the wait does not
 | 
			
		||||
 *          succeed in the allotted time, and -1 on error.
 | 
			
		||||
 *
 | 
			
		||||
 *  \warning On some platforms this function is implemented by looping with a
 | 
			
		||||
 *           delay of 1 ms, and so should be avoided if possible.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_SemWaitTimeout(SDL_sem * sem, Uint32 ms);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Atomically increases the semaphore's count (not blocking).
 | 
			
		||||
 *
 | 
			
		||||
 *  \return 0, or -1 on error.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_SemPost(SDL_sem * sem);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Returns the current count of the semaphore.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC Uint32 SDLCALL SDL_SemValue(SDL_sem * sem);
 | 
			
		||||
 | 
			
		||||
/* @} *//* Semaphore functions */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name Condition variable functions
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
 | 
			
		||||
/* The SDL condition variable structure, defined in SDL_syscond.c */
 | 
			
		||||
struct SDL_cond;
 | 
			
		||||
typedef struct SDL_cond SDL_cond;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Create a condition variable.
 | 
			
		||||
 *
 | 
			
		||||
 *  Typical use of condition variables:
 | 
			
		||||
 *
 | 
			
		||||
 *  Thread A:
 | 
			
		||||
 *    SDL_LockMutex(lock);
 | 
			
		||||
 *    while ( ! condition ) {
 | 
			
		||||
 *        SDL_CondWait(cond, lock);
 | 
			
		||||
 *    }
 | 
			
		||||
 *    SDL_UnlockMutex(lock);
 | 
			
		||||
 *
 | 
			
		||||
 *  Thread B:
 | 
			
		||||
 *    SDL_LockMutex(lock);
 | 
			
		||||
 *    ...
 | 
			
		||||
 *    condition = true;
 | 
			
		||||
 *    ...
 | 
			
		||||
 *    SDL_CondSignal(cond);
 | 
			
		||||
 *    SDL_UnlockMutex(lock);
 | 
			
		||||
 *
 | 
			
		||||
 *  There is some discussion whether to signal the condition variable
 | 
			
		||||
 *  with the mutex locked or not.  There is some potential performance
 | 
			
		||||
 *  benefit to unlocking first on some platforms, but there are some
 | 
			
		||||
 *  potential race conditions depending on how your code is structured.
 | 
			
		||||
 *
 | 
			
		||||
 *  In general it's safer to signal the condition variable while the
 | 
			
		||||
 *  mutex is locked.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_cond *SDLCALL SDL_CreateCond(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Destroy a condition variable.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_DestroyCond(SDL_cond * cond);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Restart one of the threads that are waiting on the condition variable.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return 0 or -1 on error.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_CondSignal(SDL_cond * cond);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Restart all threads that are waiting on the condition variable.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return 0 or -1 on error.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_CondBroadcast(SDL_cond * cond);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Wait on the condition variable, unlocking the provided mutex.
 | 
			
		||||
 *
 | 
			
		||||
 *  \warning The mutex must be locked before entering this function!
 | 
			
		||||
 *
 | 
			
		||||
 *  The mutex is re-locked once the condition variable is signaled.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return 0 when it is signaled, or -1 on error.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_CondWait(SDL_cond * cond, SDL_mutex * mutex);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Waits for at most \c ms milliseconds, and returns 0 if the condition
 | 
			
		||||
 *  variable is signaled, ::SDL_MUTEX_TIMEDOUT if the condition is not
 | 
			
		||||
 *  signaled in the allotted time, and -1 on error.
 | 
			
		||||
 *
 | 
			
		||||
 *  \warning On some platforms this function is implemented by looping with a
 | 
			
		||||
 *           delay of 1 ms, and so should be avoided if possible.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_CondWaitTimeout(SDL_cond * cond,
 | 
			
		||||
                                                SDL_mutex * mutex, Uint32 ms);
 | 
			
		||||
 | 
			
		||||
/* @} *//* Condition variable functions */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_mutex_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
							
								
								
									
										33
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_name.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_name.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,33 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef _SDLname_h_
 | 
			
		||||
#define _SDLname_h_
 | 
			
		||||
 | 
			
		||||
#if defined(__STDC__) || defined(__cplusplus)
 | 
			
		||||
#define NeedFunctionPrototypes 1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define SDL_NAME(X) SDL_##X
 | 
			
		||||
 | 
			
		||||
#endif /* _SDLname_h_ */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
							
								
								
									
										2176
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_opengl.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2176
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_opengl.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										11177
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_opengl_glext.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										11177
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_opengl_glext.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										38
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_opengles.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_opengles.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,38 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_opengles.h
 | 
			
		||||
 *
 | 
			
		||||
 *  This is a simple file to encapsulate the OpenGL ES 1.X API headers.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifdef __IPHONEOS__
 | 
			
		||||
#include <OpenGLES/ES1/gl.h>
 | 
			
		||||
#include <OpenGLES/ES1/glext.h>
 | 
			
		||||
#else
 | 
			
		||||
#include <GLES/gl.h>
 | 
			
		||||
#include <GLES/glext.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef APIENTRY
 | 
			
		||||
#define APIENTRY
 | 
			
		||||
#endif
 | 
			
		||||
@ -0,0 +1,50 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_opengles2.h
 | 
			
		||||
 *
 | 
			
		||||
 *  This is a simple file to encapsulate the OpenGL ES 2.0 API headers.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef _MSC_VER
 | 
			
		||||
 | 
			
		||||
#ifdef __IPHONEOS__
 | 
			
		||||
#include <OpenGLES/ES2/gl.h>
 | 
			
		||||
#include <OpenGLES/ES2/glext.h>
 | 
			
		||||
#else
 | 
			
		||||
#include <GLES2/gl2platform.h>
 | 
			
		||||
#include <GLES2/gl2.h>
 | 
			
		||||
#include <GLES2/gl2ext.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#else /* _MSC_VER */
 | 
			
		||||
 | 
			
		||||
/* OpenGL ES2 headers for Visual Studio */
 | 
			
		||||
#include "SDL_opengles2_khrplatform.h"
 | 
			
		||||
#include "SDL_opengles2_gl2platform.h"
 | 
			
		||||
#include "SDL_opengles2_gl2.h"
 | 
			
		||||
#include "SDL_opengles2_gl2ext.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _MSC_VER */
 | 
			
		||||
 | 
			
		||||
#ifndef APIENTRY
 | 
			
		||||
#define APIENTRY GL_APIENTRY
 | 
			
		||||
#endif
 | 
			
		||||
@ -0,0 +1,621 @@
 | 
			
		||||
#ifndef __gl2_h_
 | 
			
		||||
#define __gl2_h_
 | 
			
		||||
 | 
			
		||||
/* $Revision: 20555 $ on $Date:: 2013-02-12 14:32:47 -0800 #$ */
 | 
			
		||||
 | 
			
		||||
/*#include <GLES2/gl2platform.h>*/
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * This document is licensed under the SGI Free Software B License Version
 | 
			
		||||
 * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*-------------------------------------------------------------------------
 | 
			
		||||
 * Data type definitions
 | 
			
		||||
 *-----------------------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
typedef void             GLvoid;
 | 
			
		||||
typedef char             GLchar;
 | 
			
		||||
typedef unsigned int     GLenum;
 | 
			
		||||
typedef unsigned char    GLboolean;
 | 
			
		||||
typedef unsigned int     GLbitfield;
 | 
			
		||||
typedef khronos_int8_t   GLbyte;
 | 
			
		||||
typedef short            GLshort;
 | 
			
		||||
typedef int              GLint;
 | 
			
		||||
typedef int              GLsizei;
 | 
			
		||||
typedef khronos_uint8_t  GLubyte;
 | 
			
		||||
typedef unsigned short   GLushort;
 | 
			
		||||
typedef unsigned int     GLuint;
 | 
			
		||||
typedef khronos_float_t  GLfloat;
 | 
			
		||||
typedef khronos_float_t  GLclampf;
 | 
			
		||||
typedef khronos_int32_t  GLfixed;
 | 
			
		||||
 | 
			
		||||
/* GL types for handling large vertex buffer objects */
 | 
			
		||||
typedef khronos_intptr_t GLintptr;
 | 
			
		||||
typedef khronos_ssize_t  GLsizeiptr;
 | 
			
		||||
 | 
			
		||||
/* OpenGL ES core versions */
 | 
			
		||||
#define GL_ES_VERSION_2_0                 1
 | 
			
		||||
 | 
			
		||||
/* ClearBufferMask */
 | 
			
		||||
#define GL_DEPTH_BUFFER_BIT               0x00000100
 | 
			
		||||
#define GL_STENCIL_BUFFER_BIT             0x00000400
 | 
			
		||||
#define GL_COLOR_BUFFER_BIT               0x00004000
 | 
			
		||||
 | 
			
		||||
/* Boolean */
 | 
			
		||||
#define GL_FALSE                          0
 | 
			
		||||
#define GL_TRUE                           1
 | 
			
		||||
 | 
			
		||||
/* BeginMode */
 | 
			
		||||
#define GL_POINTS                         0x0000
 | 
			
		||||
#define GL_LINES                          0x0001
 | 
			
		||||
#define GL_LINE_LOOP                      0x0002
 | 
			
		||||
#define GL_LINE_STRIP                     0x0003
 | 
			
		||||
#define GL_TRIANGLES                      0x0004
 | 
			
		||||
#define GL_TRIANGLE_STRIP                 0x0005
 | 
			
		||||
#define GL_TRIANGLE_FAN                   0x0006
 | 
			
		||||
 | 
			
		||||
/* AlphaFunction (not supported in ES20) */
 | 
			
		||||
/*      GL_NEVER */
 | 
			
		||||
/*      GL_LESS */
 | 
			
		||||
/*      GL_EQUAL */
 | 
			
		||||
/*      GL_LEQUAL */
 | 
			
		||||
/*      GL_GREATER */
 | 
			
		||||
/*      GL_NOTEQUAL */
 | 
			
		||||
/*      GL_GEQUAL */
 | 
			
		||||
/*      GL_ALWAYS */
 | 
			
		||||
 | 
			
		||||
/* BlendingFactorDest */
 | 
			
		||||
#define GL_ZERO                           0
 | 
			
		||||
#define GL_ONE                            1
 | 
			
		||||
#define GL_SRC_COLOR                      0x0300
 | 
			
		||||
#define GL_ONE_MINUS_SRC_COLOR            0x0301
 | 
			
		||||
#define GL_SRC_ALPHA                      0x0302
 | 
			
		||||
#define GL_ONE_MINUS_SRC_ALPHA            0x0303
 | 
			
		||||
#define GL_DST_ALPHA                      0x0304
 | 
			
		||||
#define GL_ONE_MINUS_DST_ALPHA            0x0305
 | 
			
		||||
 | 
			
		||||
/* BlendingFactorSrc */
 | 
			
		||||
/*      GL_ZERO */
 | 
			
		||||
/*      GL_ONE */
 | 
			
		||||
#define GL_DST_COLOR                      0x0306
 | 
			
		||||
#define GL_ONE_MINUS_DST_COLOR            0x0307
 | 
			
		||||
#define GL_SRC_ALPHA_SATURATE             0x0308
 | 
			
		||||
/*      GL_SRC_ALPHA */
 | 
			
		||||
/*      GL_ONE_MINUS_SRC_ALPHA */
 | 
			
		||||
/*      GL_DST_ALPHA */
 | 
			
		||||
/*      GL_ONE_MINUS_DST_ALPHA */
 | 
			
		||||
 | 
			
		||||
/* BlendEquationSeparate */
 | 
			
		||||
#define GL_FUNC_ADD                       0x8006
 | 
			
		||||
#define GL_BLEND_EQUATION                 0x8009
 | 
			
		||||
#define GL_BLEND_EQUATION_RGB             0x8009    /* same as BLEND_EQUATION */
 | 
			
		||||
#define GL_BLEND_EQUATION_ALPHA           0x883D
 | 
			
		||||
 | 
			
		||||
/* BlendSubtract */
 | 
			
		||||
#define GL_FUNC_SUBTRACT                  0x800A
 | 
			
		||||
#define GL_FUNC_REVERSE_SUBTRACT          0x800B
 | 
			
		||||
 | 
			
		||||
/* Separate Blend Functions */
 | 
			
		||||
#define GL_BLEND_DST_RGB                  0x80C8
 | 
			
		||||
#define GL_BLEND_SRC_RGB                  0x80C9
 | 
			
		||||
#define GL_BLEND_DST_ALPHA                0x80CA
 | 
			
		||||
#define GL_BLEND_SRC_ALPHA                0x80CB
 | 
			
		||||
#define GL_CONSTANT_COLOR                 0x8001
 | 
			
		||||
#define GL_ONE_MINUS_CONSTANT_COLOR       0x8002
 | 
			
		||||
#define GL_CONSTANT_ALPHA                 0x8003
 | 
			
		||||
#define GL_ONE_MINUS_CONSTANT_ALPHA       0x8004
 | 
			
		||||
#define GL_BLEND_COLOR                    0x8005
 | 
			
		||||
 | 
			
		||||
/* Buffer Objects */
 | 
			
		||||
#define GL_ARRAY_BUFFER                   0x8892
 | 
			
		||||
#define GL_ELEMENT_ARRAY_BUFFER           0x8893
 | 
			
		||||
#define GL_ARRAY_BUFFER_BINDING           0x8894
 | 
			
		||||
#define GL_ELEMENT_ARRAY_BUFFER_BINDING   0x8895
 | 
			
		||||
 | 
			
		||||
#define GL_STREAM_DRAW                    0x88E0
 | 
			
		||||
#define GL_STATIC_DRAW                    0x88E4
 | 
			
		||||
#define GL_DYNAMIC_DRAW                   0x88E8
 | 
			
		||||
 | 
			
		||||
#define GL_BUFFER_SIZE                    0x8764
 | 
			
		||||
#define GL_BUFFER_USAGE                   0x8765
 | 
			
		||||
 | 
			
		||||
#define GL_CURRENT_VERTEX_ATTRIB          0x8626
 | 
			
		||||
 | 
			
		||||
/* CullFaceMode */
 | 
			
		||||
#define GL_FRONT                          0x0404
 | 
			
		||||
#define GL_BACK                           0x0405
 | 
			
		||||
#define GL_FRONT_AND_BACK                 0x0408
 | 
			
		||||
 | 
			
		||||
/* DepthFunction */
 | 
			
		||||
/*      GL_NEVER */
 | 
			
		||||
/*      GL_LESS */
 | 
			
		||||
/*      GL_EQUAL */
 | 
			
		||||
/*      GL_LEQUAL */
 | 
			
		||||
/*      GL_GREATER */
 | 
			
		||||
/*      GL_NOTEQUAL */
 | 
			
		||||
/*      GL_GEQUAL */
 | 
			
		||||
/*      GL_ALWAYS */
 | 
			
		||||
 | 
			
		||||
/* EnableCap */
 | 
			
		||||
#define GL_TEXTURE_2D                     0x0DE1
 | 
			
		||||
#define GL_CULL_FACE                      0x0B44
 | 
			
		||||
#define GL_BLEND                          0x0BE2
 | 
			
		||||
#define GL_DITHER                         0x0BD0
 | 
			
		||||
#define GL_STENCIL_TEST                   0x0B90
 | 
			
		||||
#define GL_DEPTH_TEST                     0x0B71
 | 
			
		||||
#define GL_SCISSOR_TEST                   0x0C11
 | 
			
		||||
#define GL_POLYGON_OFFSET_FILL            0x8037
 | 
			
		||||
#define GL_SAMPLE_ALPHA_TO_COVERAGE       0x809E
 | 
			
		||||
#define GL_SAMPLE_COVERAGE                0x80A0
 | 
			
		||||
 | 
			
		||||
/* ErrorCode */
 | 
			
		||||
#define GL_NO_ERROR                       0
 | 
			
		||||
#define GL_INVALID_ENUM                   0x0500
 | 
			
		||||
#define GL_INVALID_VALUE                  0x0501
 | 
			
		||||
#define GL_INVALID_OPERATION              0x0502
 | 
			
		||||
#define GL_OUT_OF_MEMORY                  0x0505
 | 
			
		||||
 | 
			
		||||
/* FrontFaceDirection */
 | 
			
		||||
#define GL_CW                             0x0900
 | 
			
		||||
#define GL_CCW                            0x0901
 | 
			
		||||
 | 
			
		||||
/* GetPName */
 | 
			
		||||
#define GL_LINE_WIDTH                     0x0B21
 | 
			
		||||
#define GL_ALIASED_POINT_SIZE_RANGE       0x846D
 | 
			
		||||
#define GL_ALIASED_LINE_WIDTH_RANGE       0x846E
 | 
			
		||||
#define GL_CULL_FACE_MODE                 0x0B45
 | 
			
		||||
#define GL_FRONT_FACE                     0x0B46
 | 
			
		||||
#define GL_DEPTH_RANGE                    0x0B70
 | 
			
		||||
#define GL_DEPTH_WRITEMASK                0x0B72
 | 
			
		||||
#define GL_DEPTH_CLEAR_VALUE              0x0B73
 | 
			
		||||
#define GL_DEPTH_FUNC                     0x0B74
 | 
			
		||||
#define GL_STENCIL_CLEAR_VALUE            0x0B91
 | 
			
		||||
#define GL_STENCIL_FUNC                   0x0B92
 | 
			
		||||
#define GL_STENCIL_FAIL                   0x0B94
 | 
			
		||||
#define GL_STENCIL_PASS_DEPTH_FAIL        0x0B95
 | 
			
		||||
#define GL_STENCIL_PASS_DEPTH_PASS        0x0B96
 | 
			
		||||
#define GL_STENCIL_REF                    0x0B97
 | 
			
		||||
#define GL_STENCIL_VALUE_MASK             0x0B93
 | 
			
		||||
#define GL_STENCIL_WRITEMASK              0x0B98
 | 
			
		||||
#define GL_STENCIL_BACK_FUNC              0x8800
 | 
			
		||||
#define GL_STENCIL_BACK_FAIL              0x8801
 | 
			
		||||
#define GL_STENCIL_BACK_PASS_DEPTH_FAIL   0x8802
 | 
			
		||||
#define GL_STENCIL_BACK_PASS_DEPTH_PASS   0x8803
 | 
			
		||||
#define GL_STENCIL_BACK_REF               0x8CA3
 | 
			
		||||
#define GL_STENCIL_BACK_VALUE_MASK        0x8CA4
 | 
			
		||||
#define GL_STENCIL_BACK_WRITEMASK         0x8CA5
 | 
			
		||||
#define GL_VIEWPORT                       0x0BA2
 | 
			
		||||
#define GL_SCISSOR_BOX                    0x0C10
 | 
			
		||||
/*      GL_SCISSOR_TEST */
 | 
			
		||||
#define GL_COLOR_CLEAR_VALUE              0x0C22
 | 
			
		||||
#define GL_COLOR_WRITEMASK                0x0C23
 | 
			
		||||
#define GL_UNPACK_ALIGNMENT               0x0CF5
 | 
			
		||||
#define GL_PACK_ALIGNMENT                 0x0D05
 | 
			
		||||
#define GL_MAX_TEXTURE_SIZE               0x0D33
 | 
			
		||||
#define GL_MAX_VIEWPORT_DIMS              0x0D3A
 | 
			
		||||
#define GL_SUBPIXEL_BITS                  0x0D50
 | 
			
		||||
#define GL_RED_BITS                       0x0D52
 | 
			
		||||
#define GL_GREEN_BITS                     0x0D53
 | 
			
		||||
#define GL_BLUE_BITS                      0x0D54
 | 
			
		||||
#define GL_ALPHA_BITS                     0x0D55
 | 
			
		||||
#define GL_DEPTH_BITS                     0x0D56
 | 
			
		||||
#define GL_STENCIL_BITS                   0x0D57
 | 
			
		||||
#define GL_POLYGON_OFFSET_UNITS           0x2A00
 | 
			
		||||
/*      GL_POLYGON_OFFSET_FILL */
 | 
			
		||||
#define GL_POLYGON_OFFSET_FACTOR          0x8038
 | 
			
		||||
#define GL_TEXTURE_BINDING_2D             0x8069
 | 
			
		||||
#define GL_SAMPLE_BUFFERS                 0x80A8
 | 
			
		||||
#define GL_SAMPLES                        0x80A9
 | 
			
		||||
#define GL_SAMPLE_COVERAGE_VALUE          0x80AA
 | 
			
		||||
#define GL_SAMPLE_COVERAGE_INVERT         0x80AB
 | 
			
		||||
 | 
			
		||||
/* GetTextureParameter */
 | 
			
		||||
/*      GL_TEXTURE_MAG_FILTER */
 | 
			
		||||
/*      GL_TEXTURE_MIN_FILTER */
 | 
			
		||||
/*      GL_TEXTURE_WRAP_S */
 | 
			
		||||
/*      GL_TEXTURE_WRAP_T */
 | 
			
		||||
 | 
			
		||||
#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
 | 
			
		||||
#define GL_COMPRESSED_TEXTURE_FORMATS     0x86A3
 | 
			
		||||
 | 
			
		||||
/* HintMode */
 | 
			
		||||
#define GL_DONT_CARE                      0x1100
 | 
			
		||||
#define GL_FASTEST                        0x1101
 | 
			
		||||
#define GL_NICEST                         0x1102
 | 
			
		||||
 | 
			
		||||
/* HintTarget */
 | 
			
		||||
#define GL_GENERATE_MIPMAP_HINT            0x8192
 | 
			
		||||
 | 
			
		||||
/* DataType */
 | 
			
		||||
#define GL_BYTE                           0x1400
 | 
			
		||||
#define GL_UNSIGNED_BYTE                  0x1401
 | 
			
		||||
#define GL_SHORT                          0x1402
 | 
			
		||||
#define GL_UNSIGNED_SHORT                 0x1403
 | 
			
		||||
#define GL_INT                            0x1404
 | 
			
		||||
#define GL_UNSIGNED_INT                   0x1405
 | 
			
		||||
#define GL_FLOAT                          0x1406
 | 
			
		||||
#define GL_FIXED                          0x140C
 | 
			
		||||
 | 
			
		||||
/* PixelFormat */
 | 
			
		||||
#define GL_DEPTH_COMPONENT                0x1902
 | 
			
		||||
#define GL_ALPHA                          0x1906
 | 
			
		||||
#define GL_RGB                            0x1907
 | 
			
		||||
#define GL_RGBA                           0x1908
 | 
			
		||||
#define GL_LUMINANCE                      0x1909
 | 
			
		||||
#define GL_LUMINANCE_ALPHA                0x190A
 | 
			
		||||
 | 
			
		||||
/* PixelType */
 | 
			
		||||
/*      GL_UNSIGNED_BYTE */
 | 
			
		||||
#define GL_UNSIGNED_SHORT_4_4_4_4         0x8033
 | 
			
		||||
#define GL_UNSIGNED_SHORT_5_5_5_1         0x8034
 | 
			
		||||
#define GL_UNSIGNED_SHORT_5_6_5           0x8363
 | 
			
		||||
 | 
			
		||||
/* Shaders */
 | 
			
		||||
#define GL_FRAGMENT_SHADER                  0x8B30
 | 
			
		||||
#define GL_VERTEX_SHADER                    0x8B31
 | 
			
		||||
#define GL_MAX_VERTEX_ATTRIBS               0x8869
 | 
			
		||||
#define GL_MAX_VERTEX_UNIFORM_VECTORS       0x8DFB
 | 
			
		||||
#define GL_MAX_VARYING_VECTORS              0x8DFC
 | 
			
		||||
#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
 | 
			
		||||
#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS   0x8B4C
 | 
			
		||||
#define GL_MAX_TEXTURE_IMAGE_UNITS          0x8872
 | 
			
		||||
#define GL_MAX_FRAGMENT_UNIFORM_VECTORS     0x8DFD
 | 
			
		||||
#define GL_SHADER_TYPE                      0x8B4F
 | 
			
		||||
#define GL_DELETE_STATUS                    0x8B80
 | 
			
		||||
#define GL_LINK_STATUS                      0x8B82
 | 
			
		||||
#define GL_VALIDATE_STATUS                  0x8B83
 | 
			
		||||
#define GL_ATTACHED_SHADERS                 0x8B85
 | 
			
		||||
#define GL_ACTIVE_UNIFORMS                  0x8B86
 | 
			
		||||
#define GL_ACTIVE_UNIFORM_MAX_LENGTH        0x8B87
 | 
			
		||||
#define GL_ACTIVE_ATTRIBUTES                0x8B89
 | 
			
		||||
#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH      0x8B8A
 | 
			
		||||
#define GL_SHADING_LANGUAGE_VERSION         0x8B8C
 | 
			
		||||
#define GL_CURRENT_PROGRAM                  0x8B8D
 | 
			
		||||
 | 
			
		||||
/* StencilFunction */
 | 
			
		||||
#define GL_NEVER                          0x0200
 | 
			
		||||
#define GL_LESS                           0x0201
 | 
			
		||||
#define GL_EQUAL                          0x0202
 | 
			
		||||
#define GL_LEQUAL                         0x0203
 | 
			
		||||
#define GL_GREATER                        0x0204
 | 
			
		||||
#define GL_NOTEQUAL                       0x0205
 | 
			
		||||
#define GL_GEQUAL                         0x0206
 | 
			
		||||
#define GL_ALWAYS                         0x0207
 | 
			
		||||
 | 
			
		||||
/* StencilOp */
 | 
			
		||||
/*      GL_ZERO */
 | 
			
		||||
#define GL_KEEP                           0x1E00
 | 
			
		||||
#define GL_REPLACE                        0x1E01
 | 
			
		||||
#define GL_INCR                           0x1E02
 | 
			
		||||
#define GL_DECR                           0x1E03
 | 
			
		||||
#define GL_INVERT                         0x150A
 | 
			
		||||
#define GL_INCR_WRAP                      0x8507
 | 
			
		||||
#define GL_DECR_WRAP                      0x8508
 | 
			
		||||
 | 
			
		||||
/* StringName */
 | 
			
		||||
#define GL_VENDOR                         0x1F00
 | 
			
		||||
#define GL_RENDERER                       0x1F01
 | 
			
		||||
#define GL_VERSION                        0x1F02
 | 
			
		||||
#define GL_EXTENSIONS                     0x1F03
 | 
			
		||||
 | 
			
		||||
/* TextureMagFilter */
 | 
			
		||||
#define GL_NEAREST                        0x2600
 | 
			
		||||
#define GL_LINEAR                         0x2601
 | 
			
		||||
 | 
			
		||||
/* TextureMinFilter */
 | 
			
		||||
/*      GL_NEAREST */
 | 
			
		||||
/*      GL_LINEAR */
 | 
			
		||||
#define GL_NEAREST_MIPMAP_NEAREST         0x2700
 | 
			
		||||
#define GL_LINEAR_MIPMAP_NEAREST          0x2701
 | 
			
		||||
#define GL_NEAREST_MIPMAP_LINEAR          0x2702
 | 
			
		||||
#define GL_LINEAR_MIPMAP_LINEAR           0x2703
 | 
			
		||||
 | 
			
		||||
/* TextureParameterName */
 | 
			
		||||
#define GL_TEXTURE_MAG_FILTER             0x2800
 | 
			
		||||
#define GL_TEXTURE_MIN_FILTER             0x2801
 | 
			
		||||
#define GL_TEXTURE_WRAP_S                 0x2802
 | 
			
		||||
#define GL_TEXTURE_WRAP_T                 0x2803
 | 
			
		||||
 | 
			
		||||
/* TextureTarget */
 | 
			
		||||
/*      GL_TEXTURE_2D */
 | 
			
		||||
#define GL_TEXTURE                        0x1702
 | 
			
		||||
 | 
			
		||||
#define GL_TEXTURE_CUBE_MAP               0x8513
 | 
			
		||||
#define GL_TEXTURE_BINDING_CUBE_MAP       0x8514
 | 
			
		||||
#define GL_TEXTURE_CUBE_MAP_POSITIVE_X    0x8515
 | 
			
		||||
#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X    0x8516
 | 
			
		||||
#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y    0x8517
 | 
			
		||||
#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y    0x8518
 | 
			
		||||
#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z    0x8519
 | 
			
		||||
#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z    0x851A
 | 
			
		||||
#define GL_MAX_CUBE_MAP_TEXTURE_SIZE      0x851C
 | 
			
		||||
 | 
			
		||||
/* TextureUnit */
 | 
			
		||||
#define GL_TEXTURE0                       0x84C0
 | 
			
		||||
#define GL_TEXTURE1                       0x84C1
 | 
			
		||||
#define GL_TEXTURE2                       0x84C2
 | 
			
		||||
#define GL_TEXTURE3                       0x84C3
 | 
			
		||||
#define GL_TEXTURE4                       0x84C4
 | 
			
		||||
#define GL_TEXTURE5                       0x84C5
 | 
			
		||||
#define GL_TEXTURE6                       0x84C6
 | 
			
		||||
#define GL_TEXTURE7                       0x84C7
 | 
			
		||||
#define GL_TEXTURE8                       0x84C8
 | 
			
		||||
#define GL_TEXTURE9                       0x84C9
 | 
			
		||||
#define GL_TEXTURE10                      0x84CA
 | 
			
		||||
#define GL_TEXTURE11                      0x84CB
 | 
			
		||||
#define GL_TEXTURE12                      0x84CC
 | 
			
		||||
#define GL_TEXTURE13                      0x84CD
 | 
			
		||||
#define GL_TEXTURE14                      0x84CE
 | 
			
		||||
#define GL_TEXTURE15                      0x84CF
 | 
			
		||||
#define GL_TEXTURE16                      0x84D0
 | 
			
		||||
#define GL_TEXTURE17                      0x84D1
 | 
			
		||||
#define GL_TEXTURE18                      0x84D2
 | 
			
		||||
#define GL_TEXTURE19                      0x84D3
 | 
			
		||||
#define GL_TEXTURE20                      0x84D4
 | 
			
		||||
#define GL_TEXTURE21                      0x84D5
 | 
			
		||||
#define GL_TEXTURE22                      0x84D6
 | 
			
		||||
#define GL_TEXTURE23                      0x84D7
 | 
			
		||||
#define GL_TEXTURE24                      0x84D8
 | 
			
		||||
#define GL_TEXTURE25                      0x84D9
 | 
			
		||||
#define GL_TEXTURE26                      0x84DA
 | 
			
		||||
#define GL_TEXTURE27                      0x84DB
 | 
			
		||||
#define GL_TEXTURE28                      0x84DC
 | 
			
		||||
#define GL_TEXTURE29                      0x84DD
 | 
			
		||||
#define GL_TEXTURE30                      0x84DE
 | 
			
		||||
#define GL_TEXTURE31                      0x84DF
 | 
			
		||||
#define GL_ACTIVE_TEXTURE                 0x84E0
 | 
			
		||||
 | 
			
		||||
/* TextureWrapMode */
 | 
			
		||||
#define GL_REPEAT                         0x2901
 | 
			
		||||
#define GL_CLAMP_TO_EDGE                  0x812F
 | 
			
		||||
#define GL_MIRRORED_REPEAT                0x8370
 | 
			
		||||
 | 
			
		||||
/* Uniform Types */
 | 
			
		||||
#define GL_FLOAT_VEC2                     0x8B50
 | 
			
		||||
#define GL_FLOAT_VEC3                     0x8B51
 | 
			
		||||
#define GL_FLOAT_VEC4                     0x8B52
 | 
			
		||||
#define GL_INT_VEC2                       0x8B53
 | 
			
		||||
#define GL_INT_VEC3                       0x8B54
 | 
			
		||||
#define GL_INT_VEC4                       0x8B55
 | 
			
		||||
#define GL_BOOL                           0x8B56
 | 
			
		||||
#define GL_BOOL_VEC2                      0x8B57
 | 
			
		||||
#define GL_BOOL_VEC3                      0x8B58
 | 
			
		||||
#define GL_BOOL_VEC4                      0x8B59
 | 
			
		||||
#define GL_FLOAT_MAT2                     0x8B5A
 | 
			
		||||
#define GL_FLOAT_MAT3                     0x8B5B
 | 
			
		||||
#define GL_FLOAT_MAT4                     0x8B5C
 | 
			
		||||
#define GL_SAMPLER_2D                     0x8B5E
 | 
			
		||||
#define GL_SAMPLER_CUBE                   0x8B60
 | 
			
		||||
 | 
			
		||||
/* Vertex Arrays */
 | 
			
		||||
#define GL_VERTEX_ATTRIB_ARRAY_ENABLED        0x8622
 | 
			
		||||
#define GL_VERTEX_ATTRIB_ARRAY_SIZE           0x8623
 | 
			
		||||
#define GL_VERTEX_ATTRIB_ARRAY_STRIDE         0x8624
 | 
			
		||||
#define GL_VERTEX_ATTRIB_ARRAY_TYPE           0x8625
 | 
			
		||||
#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED     0x886A
 | 
			
		||||
#define GL_VERTEX_ATTRIB_ARRAY_POINTER        0x8645
 | 
			
		||||
#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F
 | 
			
		||||
 | 
			
		||||
/* Read Format */
 | 
			
		||||
#define GL_IMPLEMENTATION_COLOR_READ_TYPE   0x8B9A
 | 
			
		||||
#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
 | 
			
		||||
 | 
			
		||||
/* Shader Source */
 | 
			
		||||
#define GL_COMPILE_STATUS                 0x8B81
 | 
			
		||||
#define GL_INFO_LOG_LENGTH                0x8B84
 | 
			
		||||
#define GL_SHADER_SOURCE_LENGTH           0x8B88
 | 
			
		||||
#define GL_SHADER_COMPILER                0x8DFA
 | 
			
		||||
 | 
			
		||||
/* Shader Binary */
 | 
			
		||||
#define GL_SHADER_BINARY_FORMATS          0x8DF8
 | 
			
		||||
#define GL_NUM_SHADER_BINARY_FORMATS      0x8DF9
 | 
			
		||||
 | 
			
		||||
/* Shader Precision-Specified Types */
 | 
			
		||||
#define GL_LOW_FLOAT                      0x8DF0
 | 
			
		||||
#define GL_MEDIUM_FLOAT                   0x8DF1
 | 
			
		||||
#define GL_HIGH_FLOAT                     0x8DF2
 | 
			
		||||
#define GL_LOW_INT                        0x8DF3
 | 
			
		||||
#define GL_MEDIUM_INT                     0x8DF4
 | 
			
		||||
#define GL_HIGH_INT                       0x8DF5
 | 
			
		||||
 | 
			
		||||
/* Framebuffer Object. */
 | 
			
		||||
#define GL_FRAMEBUFFER                    0x8D40
 | 
			
		||||
#define GL_RENDERBUFFER                   0x8D41
 | 
			
		||||
 | 
			
		||||
#define GL_RGBA4                          0x8056
 | 
			
		||||
#define GL_RGB5_A1                        0x8057
 | 
			
		||||
#define GL_RGB565                         0x8D62
 | 
			
		||||
#define GL_DEPTH_COMPONENT16              0x81A5
 | 
			
		||||
#define GL_STENCIL_INDEX8                 0x8D48
 | 
			
		||||
 | 
			
		||||
#define GL_RENDERBUFFER_WIDTH             0x8D42
 | 
			
		||||
#define GL_RENDERBUFFER_HEIGHT            0x8D43
 | 
			
		||||
#define GL_RENDERBUFFER_INTERNAL_FORMAT   0x8D44
 | 
			
		||||
#define GL_RENDERBUFFER_RED_SIZE          0x8D50
 | 
			
		||||
#define GL_RENDERBUFFER_GREEN_SIZE        0x8D51
 | 
			
		||||
#define GL_RENDERBUFFER_BLUE_SIZE         0x8D52
 | 
			
		||||
#define GL_RENDERBUFFER_ALPHA_SIZE        0x8D53
 | 
			
		||||
#define GL_RENDERBUFFER_DEPTH_SIZE        0x8D54
 | 
			
		||||
#define GL_RENDERBUFFER_STENCIL_SIZE      0x8D55
 | 
			
		||||
 | 
			
		||||
#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE           0x8CD0
 | 
			
		||||
#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME           0x8CD1
 | 
			
		||||
#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL         0x8CD2
 | 
			
		||||
#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3
 | 
			
		||||
 | 
			
		||||
#define GL_COLOR_ATTACHMENT0              0x8CE0
 | 
			
		||||
#define GL_DEPTH_ATTACHMENT               0x8D00
 | 
			
		||||
#define GL_STENCIL_ATTACHMENT             0x8D20
 | 
			
		||||
 | 
			
		||||
#define GL_NONE                           0
 | 
			
		||||
 | 
			
		||||
#define GL_FRAMEBUFFER_COMPLETE                      0x8CD5
 | 
			
		||||
#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT         0x8CD6
 | 
			
		||||
#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
 | 
			
		||||
#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS         0x8CD9
 | 
			
		||||
#define GL_FRAMEBUFFER_UNSUPPORTED                   0x8CDD
 | 
			
		||||
 | 
			
		||||
#define GL_FRAMEBUFFER_BINDING            0x8CA6
 | 
			
		||||
#define GL_RENDERBUFFER_BINDING           0x8CA7
 | 
			
		||||
#define GL_MAX_RENDERBUFFER_SIZE          0x84E8
 | 
			
		||||
 | 
			
		||||
#define GL_INVALID_FRAMEBUFFER_OPERATION  0x0506
 | 
			
		||||
 | 
			
		||||
/*-------------------------------------------------------------------------
 | 
			
		||||
 * GL core functions.
 | 
			
		||||
 *-----------------------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glActiveTexture (GLenum texture);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glAttachShader (GLuint program, GLuint shader);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar* name);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glBindTexture (GLenum target, GLuint texture);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glBlendColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glBlendEquation ( GLenum mode );
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glBlendFuncSeparate (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);
 | 
			
		||||
GL_APICALL GLenum       GL_APIENTRY glCheckFramebufferStatus (GLenum target);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glClear (GLbitfield mask);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glClearDepthf (GLclampf depth);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glClearStencil (GLint s);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glCompileShader (GLuint shader);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
 | 
			
		||||
GL_APICALL GLuint       GL_APIENTRY glCreateProgram (void);
 | 
			
		||||
GL_APICALL GLuint       GL_APIENTRY glCreateShader (GLenum type);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glCullFace (GLenum mode);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint* buffers);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint* framebuffers);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glDeleteProgram (GLuint program);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint* renderbuffers);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glDeleteShader (GLuint shader);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint* textures);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glDepthFunc (GLenum func);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glDepthMask (GLboolean flag);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glDepthRangef (GLclampf zNear, GLclampf zFar);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glDetachShader (GLuint program, GLuint shader);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glDisable (GLenum cap);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glDisableVertexAttribArray (GLuint index);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glEnable (GLenum cap);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glEnableVertexAttribArray (GLuint index);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glFinish (void);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glFlush (void);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glFrontFace (GLenum mode);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glGenBuffers (GLsizei n, GLuint* buffers);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glGenerateMipmap (GLenum target);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glGenFramebuffers (GLsizei n, GLuint* framebuffers);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glGenRenderbuffers (GLsizei n, GLuint* renderbuffers);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glGenTextures (GLsizei n, GLuint* textures);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders);
 | 
			
		||||
GL_APICALL GLint        GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar* name);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean* params);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint* params);
 | 
			
		||||
GL_APICALL GLenum       GL_APIENTRY glGetError (void);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glGetFloatv (GLenum pname, GLfloat* params);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint* params);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glGetIntegerv (GLenum pname, GLint* params);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint* params);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint* params);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint* params);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glGetShaderSource (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source);
 | 
			
		||||
GL_APICALL const GLubyte* GL_APIENTRY glGetString (GLenum name);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat* params);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint* params);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat* params);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glGetUniformiv (GLuint program, GLint location, GLint* params);
 | 
			
		||||
GL_APICALL GLint        GL_APIENTRY glGetUniformLocation (GLuint program, const GLchar* name);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat* params);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint* params);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, GLvoid** pointer);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glHint (GLenum target, GLenum mode);
 | 
			
		||||
GL_APICALL GLboolean    GL_APIENTRY glIsBuffer (GLuint buffer);
 | 
			
		||||
GL_APICALL GLboolean    GL_APIENTRY glIsEnabled (GLenum cap);
 | 
			
		||||
GL_APICALL GLboolean    GL_APIENTRY glIsFramebuffer (GLuint framebuffer);
 | 
			
		||||
GL_APICALL GLboolean    GL_APIENTRY glIsProgram (GLuint program);
 | 
			
		||||
GL_APICALL GLboolean    GL_APIENTRY glIsRenderbuffer (GLuint renderbuffer);
 | 
			
		||||
GL_APICALL GLboolean    GL_APIENTRY glIsShader (GLuint shader);
 | 
			
		||||
GL_APICALL GLboolean    GL_APIENTRY glIsTexture (GLuint texture);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glLineWidth (GLfloat width);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glLinkProgram (GLuint program);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glPixelStorei (GLenum pname, GLint param);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glReleaseShaderCompiler (void);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glSampleCoverage (GLclampf value, GLboolean invert);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glShaderBinary (GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar* const* string, const GLint* length);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glStencilMask (GLuint mask);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glStencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat* params);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint* params);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glUniform1f (GLint location, GLfloat x);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat* v);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glUniform1i (GLint location, GLint x);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint* v);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glUniform2f (GLint location, GLfloat x, GLfloat y);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat* v);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glUniform2i (GLint location, GLint x, GLint y);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint* v);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glUniform3f (GLint location, GLfloat x, GLfloat y, GLfloat z);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat* v);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glUniform3i (GLint location, GLint x, GLint y, GLint z);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint* v);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glUniform4f (GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat* v);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glUniform4i (GLint location, GLint x, GLint y, GLint z, GLint w);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint* v);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glUseProgram (GLuint program);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glValidateProgram (GLuint program);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glVertexAttrib1f (GLuint indx, GLfloat x);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glVertexAttrib1fv (GLuint indx, const GLfloat* values);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glVertexAttrib2f (GLuint indx, GLfloat x, GLfloat y);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glVertexAttrib2fv (GLuint indx, const GLfloat* values);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glVertexAttrib3f (GLuint indx, GLfloat x, GLfloat y, GLfloat z);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glVertexAttrib3fv (GLuint indx, const GLfloat* values);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glVertexAttrib4f (GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glVertexAttrib4fv (GLuint indx, const GLfloat* values);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glVertexAttribPointer (GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr);
 | 
			
		||||
GL_APICALL void         GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* __gl2_h_ */
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2050
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_opengles2_gl2ext.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2050
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_opengles2_gl2ext.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -0,0 +1,30 @@
 | 
			
		||||
#ifndef __gl2platform_h_
 | 
			
		||||
#define __gl2platform_h_
 | 
			
		||||
 | 
			
		||||
/* $Revision: 10602 $ on $Date:: 2010-03-04 22:35:34 -0800 #$ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * This document is licensed under the SGI Free Software B License Version
 | 
			
		||||
 * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* Platform-specific types and definitions for OpenGL ES 2.X  gl2.h
 | 
			
		||||
 *
 | 
			
		||||
 * Adopters may modify khrplatform.h and this file to suit their platform.
 | 
			
		||||
 * You are encouraged to submit all modifications to the Khronos group so that
 | 
			
		||||
 * they can be included in future versions of this file.  Please submit changes
 | 
			
		||||
 * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla)
 | 
			
		||||
 * by filing a bug against product "OpenGL-ES" component "Registry".
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*#include <KHR/khrplatform.h>*/
 | 
			
		||||
 | 
			
		||||
#ifndef GL_APICALL
 | 
			
		||||
#define GL_APICALL  KHRONOS_APICALL
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef GL_APIENTRY
 | 
			
		||||
#define GL_APIENTRY KHRONOS_APIENTRY
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* __gl2platform_h_ */
 | 
			
		||||
@ -0,0 +1,282 @@
 | 
			
		||||
#ifndef __khrplatform_h_
 | 
			
		||||
#define __khrplatform_h_
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** Copyright (c) 2008-2009 The Khronos Group Inc.
 | 
			
		||||
**
 | 
			
		||||
** Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
** copy of this software and/or associated documentation files (the
 | 
			
		||||
** "Materials"), to deal in the Materials without restriction, including
 | 
			
		||||
** without limitation the rights to use, copy, modify, merge, publish,
 | 
			
		||||
** distribute, sublicense, and/or sell copies of the Materials, and to
 | 
			
		||||
** permit persons to whom the Materials are furnished to do so, subject to
 | 
			
		||||
** the following conditions:
 | 
			
		||||
**
 | 
			
		||||
** The above copyright notice and this permission notice shall be included
 | 
			
		||||
** in all copies or substantial portions of the Materials.
 | 
			
		||||
**
 | 
			
		||||
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 | 
			
		||||
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 | 
			
		||||
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 | 
			
		||||
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 | 
			
		||||
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 | 
			
		||||
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 | 
			
		||||
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/* Khronos platform-specific types and definitions.
 | 
			
		||||
 *
 | 
			
		||||
 * $Revision: 23298 $ on $Date: 2013-09-30 17:07:13 -0700 (Mon, 30 Sep 2013) $
 | 
			
		||||
 *
 | 
			
		||||
 * Adopters may modify this file to suit their platform. Adopters are
 | 
			
		||||
 * encouraged to submit platform specific modifications to the Khronos
 | 
			
		||||
 * group so that they can be included in future versions of this file.
 | 
			
		||||
 * Please submit changes by sending them to the public Khronos Bugzilla
 | 
			
		||||
 * (http://khronos.org/bugzilla) by filing a bug against product
 | 
			
		||||
 * "Khronos (general)" component "Registry".
 | 
			
		||||
 *
 | 
			
		||||
 * A predefined template which fills in some of the bug fields can be
 | 
			
		||||
 * reached using http://tinyurl.com/khrplatform-h-bugreport, but you
 | 
			
		||||
 * must create a Bugzilla login first.
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * See the Implementer's Guidelines for information about where this file
 | 
			
		||||
 * should be located on your system and for more details of its use:
 | 
			
		||||
 *    http://www.khronos.org/registry/implementers_guide.pdf
 | 
			
		||||
 *
 | 
			
		||||
 * This file should be included as
 | 
			
		||||
 *        #include <KHR/khrplatform.h>
 | 
			
		||||
 * by Khronos client API header files that use its types and defines.
 | 
			
		||||
 *
 | 
			
		||||
 * The types in khrplatform.h should only be used to define API-specific types.
 | 
			
		||||
 *
 | 
			
		||||
 * Types defined in khrplatform.h:
 | 
			
		||||
 *    khronos_int8_t              signed   8  bit
 | 
			
		||||
 *    khronos_uint8_t             unsigned 8  bit
 | 
			
		||||
 *    khronos_int16_t             signed   16 bit
 | 
			
		||||
 *    khronos_uint16_t            unsigned 16 bit
 | 
			
		||||
 *    khronos_int32_t             signed   32 bit
 | 
			
		||||
 *    khronos_uint32_t            unsigned 32 bit
 | 
			
		||||
 *    khronos_int64_t             signed   64 bit
 | 
			
		||||
 *    khronos_uint64_t            unsigned 64 bit
 | 
			
		||||
 *    khronos_intptr_t            signed   same number of bits as a pointer
 | 
			
		||||
 *    khronos_uintptr_t           unsigned same number of bits as a pointer
 | 
			
		||||
 *    khronos_ssize_t             signed   size
 | 
			
		||||
 *    khronos_usize_t             unsigned size
 | 
			
		||||
 *    khronos_float_t             signed   32 bit floating point
 | 
			
		||||
 *    khronos_time_ns_t           unsigned 64 bit time in nanoseconds
 | 
			
		||||
 *    khronos_utime_nanoseconds_t unsigned time interval or absolute time in
 | 
			
		||||
 *                                         nanoseconds
 | 
			
		||||
 *    khronos_stime_nanoseconds_t signed time interval in nanoseconds
 | 
			
		||||
 *    khronos_boolean_enum_t      enumerated boolean type. This should
 | 
			
		||||
 *      only be used as a base type when a client API's boolean type is
 | 
			
		||||
 *      an enum. Client APIs which use an integer or other type for
 | 
			
		||||
 *      booleans cannot use this as the base type for their boolean.
 | 
			
		||||
 *
 | 
			
		||||
 * Tokens defined in khrplatform.h:
 | 
			
		||||
 *
 | 
			
		||||
 *    KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.
 | 
			
		||||
 *
 | 
			
		||||
 *    KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.
 | 
			
		||||
 *    KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.
 | 
			
		||||
 *
 | 
			
		||||
 * Calling convention macros defined in this file:
 | 
			
		||||
 *    KHRONOS_APICALL
 | 
			
		||||
 *    KHRONOS_APIENTRY
 | 
			
		||||
 *    KHRONOS_APIATTRIBUTES
 | 
			
		||||
 *
 | 
			
		||||
 * These may be used in function prototypes as:
 | 
			
		||||
 *
 | 
			
		||||
 *      KHRONOS_APICALL void KHRONOS_APIENTRY funcname(
 | 
			
		||||
 *                                  int arg1,
 | 
			
		||||
 *                                  int arg2) KHRONOS_APIATTRIBUTES;
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*-------------------------------------------------------------------------
 | 
			
		||||
 * Definition of KHRONOS_APICALL
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 * This precedes the return type of the function in the function prototype.
 | 
			
		||||
 */
 | 
			
		||||
#if defined(_WIN32) && !defined(__SCITECH_SNAP__)
 | 
			
		||||
#   define KHRONOS_APICALL __declspec(dllimport)
 | 
			
		||||
#elif defined (__SYMBIAN32__)
 | 
			
		||||
#   define KHRONOS_APICALL IMPORT_C
 | 
			
		||||
#else
 | 
			
		||||
#   define KHRONOS_APICALL
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*-------------------------------------------------------------------------
 | 
			
		||||
 * Definition of KHRONOS_APIENTRY
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 * This follows the return type of the function  and precedes the function
 | 
			
		||||
 * name in the function prototype.
 | 
			
		||||
 */
 | 
			
		||||
#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)
 | 
			
		||||
    /* Win32 but not WinCE */
 | 
			
		||||
#   define KHRONOS_APIENTRY __stdcall
 | 
			
		||||
#else
 | 
			
		||||
#   define KHRONOS_APIENTRY
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*-------------------------------------------------------------------------
 | 
			
		||||
 * Definition of KHRONOS_APIATTRIBUTES
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 * This follows the closing parenthesis of the function prototype arguments.
 | 
			
		||||
 */
 | 
			
		||||
#if defined (__ARMCC_2__)
 | 
			
		||||
#define KHRONOS_APIATTRIBUTES __softfp
 | 
			
		||||
#else
 | 
			
		||||
#define KHRONOS_APIATTRIBUTES
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*-------------------------------------------------------------------------
 | 
			
		||||
 * basic type definitions
 | 
			
		||||
 *-----------------------------------------------------------------------*/
 | 
			
		||||
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Using <stdint.h>
 | 
			
		||||
 */
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
typedef int32_t                 khronos_int32_t;
 | 
			
		||||
typedef uint32_t                khronos_uint32_t;
 | 
			
		||||
typedef int64_t                 khronos_int64_t;
 | 
			
		||||
typedef uint64_t                khronos_uint64_t;
 | 
			
		||||
#define KHRONOS_SUPPORT_INT64   1
 | 
			
		||||
#define KHRONOS_SUPPORT_FLOAT   1
 | 
			
		||||
 | 
			
		||||
#elif defined(__VMS ) || defined(__sgi)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Using <inttypes.h>
 | 
			
		||||
 */
 | 
			
		||||
#include <inttypes.h>
 | 
			
		||||
typedef int32_t                 khronos_int32_t;
 | 
			
		||||
typedef uint32_t                khronos_uint32_t;
 | 
			
		||||
typedef int64_t                 khronos_int64_t;
 | 
			
		||||
typedef uint64_t                khronos_uint64_t;
 | 
			
		||||
#define KHRONOS_SUPPORT_INT64   1
 | 
			
		||||
#define KHRONOS_SUPPORT_FLOAT   1
 | 
			
		||||
 | 
			
		||||
#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Win32
 | 
			
		||||
 */
 | 
			
		||||
typedef __int32                 khronos_int32_t;
 | 
			
		||||
typedef unsigned __int32        khronos_uint32_t;
 | 
			
		||||
typedef __int64                 khronos_int64_t;
 | 
			
		||||
typedef unsigned __int64        khronos_uint64_t;
 | 
			
		||||
#define KHRONOS_SUPPORT_INT64   1
 | 
			
		||||
#define KHRONOS_SUPPORT_FLOAT   1
 | 
			
		||||
 | 
			
		||||
#elif defined(__sun__) || defined(__digital__)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Sun or Digital
 | 
			
		||||
 */
 | 
			
		||||
typedef int                     khronos_int32_t;
 | 
			
		||||
typedef unsigned int            khronos_uint32_t;
 | 
			
		||||
#if defined(__arch64__) || defined(_LP64)
 | 
			
		||||
typedef long int                khronos_int64_t;
 | 
			
		||||
typedef unsigned long int       khronos_uint64_t;
 | 
			
		||||
#else
 | 
			
		||||
typedef long long int           khronos_int64_t;
 | 
			
		||||
typedef unsigned long long int  khronos_uint64_t;
 | 
			
		||||
#endif /* __arch64__ */
 | 
			
		||||
#define KHRONOS_SUPPORT_INT64   1
 | 
			
		||||
#define KHRONOS_SUPPORT_FLOAT   1
 | 
			
		||||
 | 
			
		||||
#elif 0
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Hypothetical platform with no float or int64 support
 | 
			
		||||
 */
 | 
			
		||||
typedef int                     khronos_int32_t;
 | 
			
		||||
typedef unsigned int            khronos_uint32_t;
 | 
			
		||||
#define KHRONOS_SUPPORT_INT64   0
 | 
			
		||||
#define KHRONOS_SUPPORT_FLOAT   0
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Generic fallback
 | 
			
		||||
 */
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
typedef int32_t                 khronos_int32_t;
 | 
			
		||||
typedef uint32_t                khronos_uint32_t;
 | 
			
		||||
typedef int64_t                 khronos_int64_t;
 | 
			
		||||
typedef uint64_t                khronos_uint64_t;
 | 
			
		||||
#define KHRONOS_SUPPORT_INT64   1
 | 
			
		||||
#define KHRONOS_SUPPORT_FLOAT   1
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Types that are (so far) the same on all platforms
 | 
			
		||||
 */
 | 
			
		||||
typedef signed   char          khronos_int8_t;
 | 
			
		||||
typedef unsigned char          khronos_uint8_t;
 | 
			
		||||
typedef signed   short int     khronos_int16_t;
 | 
			
		||||
typedef unsigned short int     khronos_uint16_t;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Types that differ between LLP64 and LP64 architectures - in LLP64, 
 | 
			
		||||
 * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
 | 
			
		||||
 * to be the only LLP64 architecture in current use.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef _WIN64
 | 
			
		||||
typedef signed   long long int khronos_intptr_t;
 | 
			
		||||
typedef unsigned long long int khronos_uintptr_t;
 | 
			
		||||
typedef signed   long long int khronos_ssize_t;
 | 
			
		||||
typedef unsigned long long int khronos_usize_t;
 | 
			
		||||
#else
 | 
			
		||||
typedef signed   long  int     khronos_intptr_t;
 | 
			
		||||
typedef unsigned long  int     khronos_uintptr_t;
 | 
			
		||||
typedef signed   long  int     khronos_ssize_t;
 | 
			
		||||
typedef unsigned long  int     khronos_usize_t;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if KHRONOS_SUPPORT_FLOAT
 | 
			
		||||
/*
 | 
			
		||||
 * Float type
 | 
			
		||||
 */
 | 
			
		||||
typedef          float         khronos_float_t;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if KHRONOS_SUPPORT_INT64
 | 
			
		||||
/* Time types
 | 
			
		||||
 *
 | 
			
		||||
 * These types can be used to represent a time interval in nanoseconds or
 | 
			
		||||
 * an absolute Unadjusted System Time.  Unadjusted System Time is the number
 | 
			
		||||
 * of nanoseconds since some arbitrary system event (e.g. since the last
 | 
			
		||||
 * time the system booted).  The Unadjusted System Time is an unsigned
 | 
			
		||||
 * 64 bit value that wraps back to 0 every 584 years.  Time intervals
 | 
			
		||||
 * may be either signed or unsigned.
 | 
			
		||||
 */
 | 
			
		||||
typedef khronos_uint64_t       khronos_utime_nanoseconds_t;
 | 
			
		||||
typedef khronos_int64_t        khronos_stime_nanoseconds_t;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Dummy value used to pad enum types to 32 bits.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef KHRONOS_MAX_ENUM
 | 
			
		||||
#define KHRONOS_MAX_ENUM 0x7FFFFFFF
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Enumerated boolean type
 | 
			
		||||
 *
 | 
			
		||||
 * Values other than zero should be considered to be true.  Therefore
 | 
			
		||||
 * comparisons should not be made against KHRONOS_TRUE.
 | 
			
		||||
 */
 | 
			
		||||
typedef enum {
 | 
			
		||||
    KHRONOS_FALSE = 0,
 | 
			
		||||
    KHRONOS_TRUE  = 1,
 | 
			
		||||
    KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM
 | 
			
		||||
} khronos_boolean_enum_t;
 | 
			
		||||
 | 
			
		||||
#endif /* __khrplatform_h_ */
 | 
			
		||||
							
								
								
									
										454
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_pixels.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										454
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_pixels.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,454 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_pixels.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Header for the enumerated pixel format definitions.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_pixels_h
 | 
			
		||||
#define _SDL_pixels_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name Transparency definitions
 | 
			
		||||
 *
 | 
			
		||||
 *  These define alpha as the opacity of a surface.
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
#define SDL_ALPHA_OPAQUE 255
 | 
			
		||||
#define SDL_ALPHA_TRANSPARENT 0
 | 
			
		||||
/* @} */
 | 
			
		||||
 | 
			
		||||
/** Pixel type. */
 | 
			
		||||
enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_PIXELTYPE_UNKNOWN,
 | 
			
		||||
    SDL_PIXELTYPE_INDEX1,
 | 
			
		||||
    SDL_PIXELTYPE_INDEX4,
 | 
			
		||||
    SDL_PIXELTYPE_INDEX8,
 | 
			
		||||
    SDL_PIXELTYPE_PACKED8,
 | 
			
		||||
    SDL_PIXELTYPE_PACKED16,
 | 
			
		||||
    SDL_PIXELTYPE_PACKED32,
 | 
			
		||||
    SDL_PIXELTYPE_ARRAYU8,
 | 
			
		||||
    SDL_PIXELTYPE_ARRAYU16,
 | 
			
		||||
    SDL_PIXELTYPE_ARRAYU32,
 | 
			
		||||
    SDL_PIXELTYPE_ARRAYF16,
 | 
			
		||||
    SDL_PIXELTYPE_ARRAYF32
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/** Bitmap pixel order, high bit -> low bit. */
 | 
			
		||||
enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_BITMAPORDER_NONE,
 | 
			
		||||
    SDL_BITMAPORDER_4321,
 | 
			
		||||
    SDL_BITMAPORDER_1234
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/** Packed component order, high bit -> low bit. */
 | 
			
		||||
enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_PACKEDORDER_NONE,
 | 
			
		||||
    SDL_PACKEDORDER_XRGB,
 | 
			
		||||
    SDL_PACKEDORDER_RGBX,
 | 
			
		||||
    SDL_PACKEDORDER_ARGB,
 | 
			
		||||
    SDL_PACKEDORDER_RGBA,
 | 
			
		||||
    SDL_PACKEDORDER_XBGR,
 | 
			
		||||
    SDL_PACKEDORDER_BGRX,
 | 
			
		||||
    SDL_PACKEDORDER_ABGR,
 | 
			
		||||
    SDL_PACKEDORDER_BGRA
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/** Array component order, low byte -> high byte. */
 | 
			
		||||
/* !!! FIXME: in 2.1, make these not overlap differently with
 | 
			
		||||
   !!! FIXME:  SDL_PACKEDORDER_*, so we can simplify SDL_ISPIXELFORMAT_ALPHA */
 | 
			
		||||
enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_ARRAYORDER_NONE,
 | 
			
		||||
    SDL_ARRAYORDER_RGB,
 | 
			
		||||
    SDL_ARRAYORDER_RGBA,
 | 
			
		||||
    SDL_ARRAYORDER_ARGB,
 | 
			
		||||
    SDL_ARRAYORDER_BGR,
 | 
			
		||||
    SDL_ARRAYORDER_BGRA,
 | 
			
		||||
    SDL_ARRAYORDER_ABGR
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/** Packed component layout. */
 | 
			
		||||
enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_PACKEDLAYOUT_NONE,
 | 
			
		||||
    SDL_PACKEDLAYOUT_332,
 | 
			
		||||
    SDL_PACKEDLAYOUT_4444,
 | 
			
		||||
    SDL_PACKEDLAYOUT_1555,
 | 
			
		||||
    SDL_PACKEDLAYOUT_5551,
 | 
			
		||||
    SDL_PACKEDLAYOUT_565,
 | 
			
		||||
    SDL_PACKEDLAYOUT_8888,
 | 
			
		||||
    SDL_PACKEDLAYOUT_2101010,
 | 
			
		||||
    SDL_PACKEDLAYOUT_1010102
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define SDL_DEFINE_PIXELFOURCC(A, B, C, D) SDL_FOURCC(A, B, C, D)
 | 
			
		||||
 | 
			
		||||
#define SDL_DEFINE_PIXELFORMAT(type, order, layout, bits, bytes) \
 | 
			
		||||
    ((1 << 28) | ((type) << 24) | ((order) << 20) | ((layout) << 16) | \
 | 
			
		||||
     ((bits) << 8) | ((bytes) << 0))
 | 
			
		||||
 | 
			
		||||
#define SDL_PIXELFLAG(X)    (((X) >> 28) & 0x0F)
 | 
			
		||||
#define SDL_PIXELTYPE(X)    (((X) >> 24) & 0x0F)
 | 
			
		||||
#define SDL_PIXELORDER(X)   (((X) >> 20) & 0x0F)
 | 
			
		||||
#define SDL_PIXELLAYOUT(X)  (((X) >> 16) & 0x0F)
 | 
			
		||||
#define SDL_BITSPERPIXEL(X) (((X) >> 8) & 0xFF)
 | 
			
		||||
#define SDL_BYTESPERPIXEL(X) \
 | 
			
		||||
    (SDL_ISPIXELFORMAT_FOURCC(X) ? \
 | 
			
		||||
        ((((X) == SDL_PIXELFORMAT_YUY2) || \
 | 
			
		||||
          ((X) == SDL_PIXELFORMAT_UYVY) || \
 | 
			
		||||
          ((X) == SDL_PIXELFORMAT_YVYU)) ? 2 : 1) : (((X) >> 0) & 0xFF))
 | 
			
		||||
 | 
			
		||||
#define SDL_ISPIXELFORMAT_INDEXED(format)   \
 | 
			
		||||
    (!SDL_ISPIXELFORMAT_FOURCC(format) && \
 | 
			
		||||
     ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX1) || \
 | 
			
		||||
      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX4) || \
 | 
			
		||||
      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX8)))
 | 
			
		||||
 | 
			
		||||
#define SDL_ISPIXELFORMAT_PACKED(format) \
 | 
			
		||||
    (!SDL_ISPIXELFORMAT_FOURCC(format) && \
 | 
			
		||||
     ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED8) || \
 | 
			
		||||
      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED16) || \
 | 
			
		||||
      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED32)))
 | 
			
		||||
 | 
			
		||||
#define SDL_ISPIXELFORMAT_ARRAY(format) \
 | 
			
		||||
    (!SDL_ISPIXELFORMAT_FOURCC(format) && \
 | 
			
		||||
     ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU8) || \
 | 
			
		||||
      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU16) || \
 | 
			
		||||
      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU32) || \
 | 
			
		||||
      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF16) || \
 | 
			
		||||
      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF32)))
 | 
			
		||||
 | 
			
		||||
#define SDL_ISPIXELFORMAT_ALPHA(format)   \
 | 
			
		||||
    ((SDL_ISPIXELFORMAT_PACKED(format) && \
 | 
			
		||||
     ((SDL_PIXELORDER(format) == SDL_PACKEDORDER_ARGB) || \
 | 
			
		||||
      (SDL_PIXELORDER(format) == SDL_PACKEDORDER_RGBA) || \
 | 
			
		||||
      (SDL_PIXELORDER(format) == SDL_PACKEDORDER_ABGR) || \
 | 
			
		||||
      (SDL_PIXELORDER(format) == SDL_PACKEDORDER_BGRA))) || \
 | 
			
		||||
    (SDL_ISPIXELFORMAT_ARRAY(format) && \
 | 
			
		||||
     ((SDL_PIXELORDER(format) == SDL_ARRAYORDER_ARGB) || \
 | 
			
		||||
      (SDL_PIXELORDER(format) == SDL_ARRAYORDER_RGBA) || \
 | 
			
		||||
      (SDL_PIXELORDER(format) == SDL_ARRAYORDER_ABGR) || \
 | 
			
		||||
      (SDL_PIXELORDER(format) == SDL_ARRAYORDER_BGRA))))
 | 
			
		||||
 | 
			
		||||
/* The flag is set to 1 because 0x1? is not in the printable ASCII range */
 | 
			
		||||
#define SDL_ISPIXELFORMAT_FOURCC(format)    \
 | 
			
		||||
    ((format) && (SDL_PIXELFLAG(format) != 1))
 | 
			
		||||
 | 
			
		||||
/* Note: If you modify this list, update SDL_GetPixelFormatName() */
 | 
			
		||||
enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_PIXELFORMAT_UNKNOWN,
 | 
			
		||||
    SDL_PIXELFORMAT_INDEX1LSB =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_4321, 0,
 | 
			
		||||
                               1, 0),
 | 
			
		||||
    SDL_PIXELFORMAT_INDEX1MSB =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_1234, 0,
 | 
			
		||||
                               1, 0),
 | 
			
		||||
    SDL_PIXELFORMAT_INDEX4LSB =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_4321, 0,
 | 
			
		||||
                               4, 0),
 | 
			
		||||
    SDL_PIXELFORMAT_INDEX4MSB =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_1234, 0,
 | 
			
		||||
                               4, 0),
 | 
			
		||||
    SDL_PIXELFORMAT_INDEX8 =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX8, 0, 0, 8, 1),
 | 
			
		||||
    SDL_PIXELFORMAT_RGB332 =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED8, SDL_PACKEDORDER_XRGB,
 | 
			
		||||
                               SDL_PACKEDLAYOUT_332, 8, 1),
 | 
			
		||||
    SDL_PIXELFORMAT_RGB444 =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
 | 
			
		||||
                               SDL_PACKEDLAYOUT_4444, 12, 2),
 | 
			
		||||
    SDL_PIXELFORMAT_RGB555 =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
 | 
			
		||||
                               SDL_PACKEDLAYOUT_1555, 15, 2),
 | 
			
		||||
    SDL_PIXELFORMAT_BGR555 =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
 | 
			
		||||
                               SDL_PACKEDLAYOUT_1555, 15, 2),
 | 
			
		||||
    SDL_PIXELFORMAT_ARGB4444 =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
 | 
			
		||||
                               SDL_PACKEDLAYOUT_4444, 16, 2),
 | 
			
		||||
    SDL_PIXELFORMAT_RGBA4444 =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA,
 | 
			
		||||
                               SDL_PACKEDLAYOUT_4444, 16, 2),
 | 
			
		||||
    SDL_PIXELFORMAT_ABGR4444 =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
 | 
			
		||||
                               SDL_PACKEDLAYOUT_4444, 16, 2),
 | 
			
		||||
    SDL_PIXELFORMAT_BGRA4444 =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA,
 | 
			
		||||
                               SDL_PACKEDLAYOUT_4444, 16, 2),
 | 
			
		||||
    SDL_PIXELFORMAT_ARGB1555 =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
 | 
			
		||||
                               SDL_PACKEDLAYOUT_1555, 16, 2),
 | 
			
		||||
    SDL_PIXELFORMAT_RGBA5551 =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA,
 | 
			
		||||
                               SDL_PACKEDLAYOUT_5551, 16, 2),
 | 
			
		||||
    SDL_PIXELFORMAT_ABGR1555 =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
 | 
			
		||||
                               SDL_PACKEDLAYOUT_1555, 16, 2),
 | 
			
		||||
    SDL_PIXELFORMAT_BGRA5551 =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA,
 | 
			
		||||
                               SDL_PACKEDLAYOUT_5551, 16, 2),
 | 
			
		||||
    SDL_PIXELFORMAT_RGB565 =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
 | 
			
		||||
                               SDL_PACKEDLAYOUT_565, 16, 2),
 | 
			
		||||
    SDL_PIXELFORMAT_BGR565 =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
 | 
			
		||||
                               SDL_PACKEDLAYOUT_565, 16, 2),
 | 
			
		||||
    SDL_PIXELFORMAT_RGB24 =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_RGB, 0,
 | 
			
		||||
                               24, 3),
 | 
			
		||||
    SDL_PIXELFORMAT_BGR24 =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_BGR, 0,
 | 
			
		||||
                               24, 3),
 | 
			
		||||
    SDL_PIXELFORMAT_RGB888 =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XRGB,
 | 
			
		||||
                               SDL_PACKEDLAYOUT_8888, 24, 4),
 | 
			
		||||
    SDL_PIXELFORMAT_RGBX8888 =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBX,
 | 
			
		||||
                               SDL_PACKEDLAYOUT_8888, 24, 4),
 | 
			
		||||
    SDL_PIXELFORMAT_BGR888 =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XBGR,
 | 
			
		||||
                               SDL_PACKEDLAYOUT_8888, 24, 4),
 | 
			
		||||
    SDL_PIXELFORMAT_BGRX8888 =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRX,
 | 
			
		||||
                               SDL_PACKEDLAYOUT_8888, 24, 4),
 | 
			
		||||
    SDL_PIXELFORMAT_ARGB8888 =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB,
 | 
			
		||||
                               SDL_PACKEDLAYOUT_8888, 32, 4),
 | 
			
		||||
    SDL_PIXELFORMAT_RGBA8888 =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBA,
 | 
			
		||||
                               SDL_PACKEDLAYOUT_8888, 32, 4),
 | 
			
		||||
    SDL_PIXELFORMAT_ABGR8888 =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ABGR,
 | 
			
		||||
                               SDL_PACKEDLAYOUT_8888, 32, 4),
 | 
			
		||||
    SDL_PIXELFORMAT_BGRA8888 =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRA,
 | 
			
		||||
                               SDL_PACKEDLAYOUT_8888, 32, 4),
 | 
			
		||||
    SDL_PIXELFORMAT_ARGB2101010 =
 | 
			
		||||
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB,
 | 
			
		||||
                               SDL_PACKEDLAYOUT_2101010, 32, 4),
 | 
			
		||||
 | 
			
		||||
    SDL_PIXELFORMAT_YV12 =      /**< Planar mode: Y + V + U  (3 planes) */
 | 
			
		||||
        SDL_DEFINE_PIXELFOURCC('Y', 'V', '1', '2'),
 | 
			
		||||
    SDL_PIXELFORMAT_IYUV =      /**< Planar mode: Y + U + V  (3 planes) */
 | 
			
		||||
        SDL_DEFINE_PIXELFOURCC('I', 'Y', 'U', 'V'),
 | 
			
		||||
    SDL_PIXELFORMAT_YUY2 =      /**< Packed mode: Y0+U0+Y1+V0 (1 plane) */
 | 
			
		||||
        SDL_DEFINE_PIXELFOURCC('Y', 'U', 'Y', '2'),
 | 
			
		||||
    SDL_PIXELFORMAT_UYVY =      /**< Packed mode: U0+Y0+V0+Y1 (1 plane) */
 | 
			
		||||
        SDL_DEFINE_PIXELFOURCC('U', 'Y', 'V', 'Y'),
 | 
			
		||||
    SDL_PIXELFORMAT_YVYU =      /**< Packed mode: Y0+V0+Y1+U0 (1 plane) */
 | 
			
		||||
        SDL_DEFINE_PIXELFOURCC('Y', 'V', 'Y', 'U'),
 | 
			
		||||
    SDL_PIXELFORMAT_NV12 =      /**< Planar mode: Y + U/V interleaved  (2 planes) */
 | 
			
		||||
        SDL_DEFINE_PIXELFOURCC('N', 'V', '1', '2'),
 | 
			
		||||
    SDL_PIXELFORMAT_NV21 =      /**< Planar mode: Y + V/U interleaved  (2 planes) */
 | 
			
		||||
        SDL_DEFINE_PIXELFOURCC('N', 'V', '2', '1')
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef struct SDL_Color
 | 
			
		||||
{
 | 
			
		||||
    Uint8 r;
 | 
			
		||||
    Uint8 g;
 | 
			
		||||
    Uint8 b;
 | 
			
		||||
    Uint8 a;
 | 
			
		||||
} SDL_Color;
 | 
			
		||||
#define SDL_Colour SDL_Color
 | 
			
		||||
 | 
			
		||||
typedef struct SDL_Palette
 | 
			
		||||
{
 | 
			
		||||
    int ncolors;
 | 
			
		||||
    SDL_Color *colors;
 | 
			
		||||
    Uint32 version;
 | 
			
		||||
    int refcount;
 | 
			
		||||
} SDL_Palette;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \note Everything in the pixel format structure is read-only.
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_PixelFormat
 | 
			
		||||
{
 | 
			
		||||
    Uint32 format;
 | 
			
		||||
    SDL_Palette *palette;
 | 
			
		||||
    Uint8 BitsPerPixel;
 | 
			
		||||
    Uint8 BytesPerPixel;
 | 
			
		||||
    Uint8 padding[2];
 | 
			
		||||
    Uint32 Rmask;
 | 
			
		||||
    Uint32 Gmask;
 | 
			
		||||
    Uint32 Bmask;
 | 
			
		||||
    Uint32 Amask;
 | 
			
		||||
    Uint8 Rloss;
 | 
			
		||||
    Uint8 Gloss;
 | 
			
		||||
    Uint8 Bloss;
 | 
			
		||||
    Uint8 Aloss;
 | 
			
		||||
    Uint8 Rshift;
 | 
			
		||||
    Uint8 Gshift;
 | 
			
		||||
    Uint8 Bshift;
 | 
			
		||||
    Uint8 Ashift;
 | 
			
		||||
    int refcount;
 | 
			
		||||
    struct SDL_PixelFormat *next;
 | 
			
		||||
} SDL_PixelFormat;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Get the human readable name of a pixel format
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC const char* SDLCALL SDL_GetPixelFormatName(Uint32 format);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Convert one of the enumerated pixel formats to a bpp and RGBA masks.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return SDL_TRUE, or SDL_FALSE if the conversion wasn't possible.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_MasksToPixelFormatEnum()
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_PixelFormatEnumToMasks(Uint32 format,
 | 
			
		||||
                                                            int *bpp,
 | 
			
		||||
                                                            Uint32 * Rmask,
 | 
			
		||||
                                                            Uint32 * Gmask,
 | 
			
		||||
                                                            Uint32 * Bmask,
 | 
			
		||||
                                                            Uint32 * Amask);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Convert a bpp and RGBA masks to an enumerated pixel format.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return The pixel format, or ::SDL_PIXELFORMAT_UNKNOWN if the conversion
 | 
			
		||||
 *          wasn't possible.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_PixelFormatEnumToMasks()
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC Uint32 SDLCALL SDL_MasksToPixelFormatEnum(int bpp,
 | 
			
		||||
                                                          Uint32 Rmask,
 | 
			
		||||
                                                          Uint32 Gmask,
 | 
			
		||||
                                                          Uint32 Bmask,
 | 
			
		||||
                                                          Uint32 Amask);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Create an SDL_PixelFormat structure from a pixel format enum.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_PixelFormat * SDLCALL SDL_AllocFormat(Uint32 pixel_format);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Free an SDL_PixelFormat structure.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_FreeFormat(SDL_PixelFormat *format);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Create a palette structure with the specified number of color
 | 
			
		||||
 *         entries.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return A new palette, or NULL if there wasn't enough memory.
 | 
			
		||||
 *
 | 
			
		||||
 *  \note The palette entries are initialized to white.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_FreePalette()
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_Palette *SDLCALL SDL_AllocPalette(int ncolors);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Set the palette for a pixel format structure.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_SetPixelFormatPalette(SDL_PixelFormat * format,
 | 
			
		||||
                                                      SDL_Palette *palette);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Set a range of colors in a palette.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param palette    The palette to modify.
 | 
			
		||||
 *  \param colors     An array of colors to copy into the palette.
 | 
			
		||||
 *  \param firstcolor The index of the first palette entry to modify.
 | 
			
		||||
 *  \param ncolors    The number of entries to modify.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return 0 on success, or -1 if not all of the colors could be set.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_SetPaletteColors(SDL_Palette * palette,
 | 
			
		||||
                                                 const SDL_Color * colors,
 | 
			
		||||
                                                 int firstcolor, int ncolors);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Free a palette created with SDL_AllocPalette().
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_AllocPalette()
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_FreePalette(SDL_Palette * palette);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Maps an RGB triple to an opaque pixel value for a given pixel format.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_MapRGBA
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC Uint32 SDLCALL SDL_MapRGB(const SDL_PixelFormat * format,
 | 
			
		||||
                                          Uint8 r, Uint8 g, Uint8 b);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Maps an RGBA quadruple to a pixel value for a given pixel format.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_MapRGB
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC Uint32 SDLCALL SDL_MapRGBA(const SDL_PixelFormat * format,
 | 
			
		||||
                                           Uint8 r, Uint8 g, Uint8 b,
 | 
			
		||||
                                           Uint8 a);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Get the RGB components from a pixel of the specified format.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_GetRGBA
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_GetRGB(Uint32 pixel,
 | 
			
		||||
                                        const SDL_PixelFormat * format,
 | 
			
		||||
                                        Uint8 * r, Uint8 * g, Uint8 * b);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Get the RGBA components from a pixel of the specified format.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_GetRGB
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_GetRGBA(Uint32 pixel,
 | 
			
		||||
                                         const SDL_PixelFormat * format,
 | 
			
		||||
                                         Uint8 * r, Uint8 * g, Uint8 * b,
 | 
			
		||||
                                         Uint8 * a);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Calculate a 256 entry gamma ramp for a gamma value.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_CalculateGammaRamp(float gamma, Uint16 * ramp);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_pixels_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
							
								
								
									
										181
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_platform.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										181
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_platform.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,181 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_platform.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Try to get a standard set of platform defines.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_platform_h
 | 
			
		||||
#define _SDL_platform_h
 | 
			
		||||
 | 
			
		||||
#if defined(_AIX)
 | 
			
		||||
#undef __AIX__
 | 
			
		||||
#define __AIX__     1
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(__HAIKU__)
 | 
			
		||||
#undef __HAIKU__
 | 
			
		||||
#define __HAIKU__   1
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(bsdi) || defined(__bsdi) || defined(__bsdi__)
 | 
			
		||||
#undef __BSDI__
 | 
			
		||||
#define __BSDI__    1
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(_arch_dreamcast)
 | 
			
		||||
#undef __DREAMCAST__
 | 
			
		||||
#define __DREAMCAST__   1
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
 | 
			
		||||
#undef __FREEBSD__
 | 
			
		||||
#define __FREEBSD__ 1
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(hpux) || defined(__hpux) || defined(__hpux__)
 | 
			
		||||
#undef __HPUX__
 | 
			
		||||
#define __HPUX__    1
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(sgi) || defined(__sgi) || defined(__sgi__) || defined(_SGI_SOURCE)
 | 
			
		||||
#undef __IRIX__
 | 
			
		||||
#define __IRIX__    1
 | 
			
		||||
#endif
 | 
			
		||||
#if (defined(linux) || defined(__linux) || defined(__linux__))
 | 
			
		||||
#undef __LINUX__
 | 
			
		||||
#define __LINUX__   1
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(ANDROID) || defined(__ANDROID__)
 | 
			
		||||
#undef __ANDROID__
 | 
			
		||||
#undef __LINUX__ /* do we need to do this? */
 | 
			
		||||
#define __ANDROID__ 1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(__APPLE__)
 | 
			
		||||
/* lets us know what version of Mac OS X we're compiling on */
 | 
			
		||||
#include "AvailabilityMacros.h"
 | 
			
		||||
#include "TargetConditionals.h"
 | 
			
		||||
#if TARGET_OS_IPHONE
 | 
			
		||||
/* if compiling for iPhone */
 | 
			
		||||
#undef __IPHONEOS__
 | 
			
		||||
#define __IPHONEOS__ 1
 | 
			
		||||
#undef __MACOSX__
 | 
			
		||||
#else
 | 
			
		||||
/* if not compiling for iPhone */
 | 
			
		||||
#undef __MACOSX__
 | 
			
		||||
#define __MACOSX__  1
 | 
			
		||||
#if MAC_OS_X_VERSION_MIN_REQUIRED < 1050
 | 
			
		||||
# error SDL for Mac OS X only supports deploying on 10.5 and above.
 | 
			
		||||
#endif /* MAC_OS_X_VERSION_MIN_REQUIRED < 1050 */
 | 
			
		||||
#endif /* TARGET_OS_IPHONE */
 | 
			
		||||
#endif /* defined(__APPLE__) */
 | 
			
		||||
 | 
			
		||||
#if defined(__NetBSD__)
 | 
			
		||||
#undef __NETBSD__
 | 
			
		||||
#define __NETBSD__  1
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(__OpenBSD__)
 | 
			
		||||
#undef __OPENBSD__
 | 
			
		||||
#define __OPENBSD__ 1
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(__OS2__)
 | 
			
		||||
#undef __OS2__
 | 
			
		||||
#define __OS2__     1
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(osf) || defined(__osf) || defined(__osf__) || defined(_OSF_SOURCE)
 | 
			
		||||
#undef __OSF__
 | 
			
		||||
#define __OSF__     1
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(__QNXNTO__)
 | 
			
		||||
#undef __QNXNTO__
 | 
			
		||||
#define __QNXNTO__  1
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(riscos) || defined(__riscos) || defined(__riscos__)
 | 
			
		||||
#undef __RISCOS__
 | 
			
		||||
#define __RISCOS__  1
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(__sun) && defined(__SVR4)
 | 
			
		||||
#undef __SOLARIS__
 | 
			
		||||
#define __SOLARIS__ 1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__)
 | 
			
		||||
/* Try to find out if we're compiling for WinRT or non-WinRT */
 | 
			
		||||
/* If _USING_V110_SDK71_ is defined it means we are using the v110_xp or v120_xp toolset. */
 | 
			
		||||
#if (defined(_MSC_VER) && (_MSC_VER >= 1700) && !_USING_V110_SDK71_)	/* _MSC_VER==1700 for MSVC 2012 */
 | 
			
		||||
#include <winapifamily.h>
 | 
			
		||||
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
 | 
			
		||||
#undef __WINDOWS__
 | 
			
		||||
#define __WINDOWS__   1
 | 
			
		||||
/* See if we're compiling for WinRT: */
 | 
			
		||||
#elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
 | 
			
		||||
#undef __WINRT__
 | 
			
		||||
#define __WINRT__ 1
 | 
			
		||||
#endif
 | 
			
		||||
#else
 | 
			
		||||
#undef __WINDOWS__
 | 
			
		||||
#define __WINDOWS__   1
 | 
			
		||||
#endif /* _MSC_VER < 1700 */
 | 
			
		||||
#endif /* defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) */
 | 
			
		||||
 | 
			
		||||
#if defined(__WINDOWS__)
 | 
			
		||||
#undef __WIN32__
 | 
			
		||||
#define __WIN32__ 1
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(__PSP__)
 | 
			
		||||
#undef __PSP__
 | 
			
		||||
#define __PSP__ 1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* The NACL compiler defines __native_client__ and __pnacl__
 | 
			
		||||
 * Ref: http://www.chromium.org/nativeclient/pnacl/stability-of-the-pnacl-bitcode-abi
 | 
			
		||||
 */
 | 
			
		||||
#if defined(__native_client__)
 | 
			
		||||
#undef __LINUX__
 | 
			
		||||
#undef __NACL__
 | 
			
		||||
#define __NACL__ 1
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(__pnacl__)
 | 
			
		||||
#undef __LINUX__
 | 
			
		||||
#undef __PNACL__
 | 
			
		||||
#define __PNACL__ 1
 | 
			
		||||
/* PNACL with newlib supports static linking only */
 | 
			
		||||
#define __SDL_NOGETPROCADDR__
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Gets the name of the platform.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC const char * SDLCALL SDL_GetPlatform (void);
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_platform_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
							
								
								
									
										75
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_power.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_power.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,75 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_power_h
 | 
			
		||||
#define _SDL_power_h
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_power.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Header for the SDL power management routines.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief The basic state for the system's power supply.
 | 
			
		||||
 */
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_POWERSTATE_UNKNOWN,      /**< cannot determine power status */
 | 
			
		||||
    SDL_POWERSTATE_ON_BATTERY,   /**< Not plugged in, running on the battery */
 | 
			
		||||
    SDL_POWERSTATE_NO_BATTERY,   /**< Plugged in, no battery available */
 | 
			
		||||
    SDL_POWERSTATE_CHARGING,     /**< Plugged in, charging battery */
 | 
			
		||||
    SDL_POWERSTATE_CHARGED       /**< Plugged in, battery charged */
 | 
			
		||||
} SDL_PowerState;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Get the current power supply details.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param secs Seconds of battery life left. You can pass a NULL here if
 | 
			
		||||
 *              you don't care. Will return -1 if we can't determine a
 | 
			
		||||
 *              value, or we're not running on a battery.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param pct Percentage of battery life left, between 0 and 100. You can
 | 
			
		||||
 *             pass a NULL here if you don't care. Will return -1 if we
 | 
			
		||||
 *             can't determine a value, or we're not running on a battery.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return The state of the battery (if any).
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_PowerState SDLCALL SDL_GetPowerInfo(int *secs, int *pct);
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_power_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
							
								
								
									
										58
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_quit.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_quit.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,58 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_quit.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Include file for SDL quit event handling.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_quit_h
 | 
			
		||||
#define _SDL_quit_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
#include "SDL_error.h"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_quit.h
 | 
			
		||||
 *
 | 
			
		||||
 *  An ::SDL_QUIT event is generated when the user tries to close the application
 | 
			
		||||
 *  window.  If it is ignored or filtered out, the window will remain open.
 | 
			
		||||
 *  If it is not ignored or filtered, it is queued normally and the window
 | 
			
		||||
 *  is allowed to close.  When the window is closed, screen updates will
 | 
			
		||||
 *  complete, but have no effect.
 | 
			
		||||
 *
 | 
			
		||||
 *  SDL_Init() installs signal handlers for SIGINT (keyboard interrupt)
 | 
			
		||||
 *  and SIGTERM (system termination request), if handlers do not already
 | 
			
		||||
 *  exist, that generate ::SDL_QUIT events as well.  There is no way
 | 
			
		||||
 *  to determine the cause of an ::SDL_QUIT event, but setting a signal
 | 
			
		||||
 *  handler in your application will override the default generation of
 | 
			
		||||
 *  quit events for that signal.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_Quit()
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* There are no functions directly affecting the quit event */
 | 
			
		||||
 | 
			
		||||
#define SDL_QuitRequested() \
 | 
			
		||||
        (SDL_PumpEvents(), (SDL_PeepEvents(NULL,0,SDL_PEEKEVENT,SDL_QUIT,SDL_QUIT) > 0))
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_quit_h */
 | 
			
		||||
							
								
								
									
										148
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_rect.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										148
									
								
								Middlewares/ST/touchgfx/framework/include/platform/hal/simulator/sdl2/vendor/SDL2/SDL_rect.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,148 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_rect.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Header file for SDL_rect definition and management functions.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_rect_h
 | 
			
		||||
#define _SDL_rect_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
#include "SDL_error.h"
 | 
			
		||||
#include "SDL_pixels.h"
 | 
			
		||||
#include "SDL_rwops.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  The structure that defines a point
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_EnclosePoints
 | 
			
		||||
 *  \sa SDL_PointInRect
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_Point
 | 
			
		||||
{
 | 
			
		||||
    int x;
 | 
			
		||||
    int y;
 | 
			
		||||
} SDL_Point;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief A rectangle, with the origin at the upper left.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_RectEmpty
 | 
			
		||||
 *  \sa SDL_RectEquals
 | 
			
		||||
 *  \sa SDL_HasIntersection
 | 
			
		||||
 *  \sa SDL_IntersectRect
 | 
			
		||||
 *  \sa SDL_UnionRect
 | 
			
		||||
 *  \sa SDL_EnclosePoints
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_Rect
 | 
			
		||||
{
 | 
			
		||||
    int x, y;
 | 
			
		||||
    int w, h;
 | 
			
		||||
} SDL_Rect;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Returns true if point resides inside a rectangle.
 | 
			
		||||
 */
 | 
			
		||||
SDL_FORCE_INLINE SDL_bool SDL_PointInRect(const SDL_Point *p, const SDL_Rect *r)
 | 
			
		||||
{
 | 
			
		||||
    return ( (p->x >= r->x) && (p->x < (r->x + r->w)) &&
 | 
			
		||||
             (p->y >= r->y) && (p->y < (r->y + r->h)) ) ? SDL_TRUE : SDL_FALSE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Returns true if the rectangle has no area.
 | 
			
		||||
 */
 | 
			
		||||
SDL_FORCE_INLINE SDL_bool SDL_RectEmpty(const SDL_Rect *r)
 | 
			
		||||
{
 | 
			
		||||
    return ((!r) || (r->w <= 0) || (r->h <= 0)) ? SDL_TRUE : SDL_FALSE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Returns true if the two rectangles are equal.
 | 
			
		||||
 */
 | 
			
		||||
SDL_FORCE_INLINE SDL_bool SDL_RectEquals(const SDL_Rect *a, const SDL_Rect *b)
 | 
			
		||||
{
 | 
			
		||||
    return (a && b && (a->x == b->x) && (a->y == b->y) &&
 | 
			
		||||
            (a->w == b->w) && (a->h == b->h)) ? SDL_TRUE : SDL_FALSE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Determine whether two rectangles intersect.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasIntersection(const SDL_Rect * A,
 | 
			
		||||
                                                     const SDL_Rect * B);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Calculate the intersection of two rectangles.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRect(const SDL_Rect * A,
 | 
			
		||||
                                                   const SDL_Rect * B,
 | 
			
		||||
                                                   SDL_Rect * result);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Calculate the union of two rectangles.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_UnionRect(const SDL_Rect * A,
 | 
			
		||||
                                           const SDL_Rect * B,
 | 
			
		||||
                                           SDL_Rect * result);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Calculate a minimal rectangle enclosing a set of points
 | 
			
		||||
 *
 | 
			
		||||
 *  \return SDL_TRUE if any points were within the clipping rect
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_EnclosePoints(const SDL_Point * points,
 | 
			
		||||
                                                   int count,
 | 
			
		||||
                                                   const SDL_Rect * clip,
 | 
			
		||||
                                                   SDL_Rect * result);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Calculate the intersection of a rectangle and line segment.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRectAndLine(const SDL_Rect *
 | 
			
		||||
                                                          rect, int *X1,
 | 
			
		||||
                                                          int *Y1, int *X2,
 | 
			
		||||
                                                          int *Y2);
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_rect_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user