123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316 |
- /*
- SDL_ttf: A companion library to SDL for working with TrueType (tm) fonts
- Copyright (C) 2001-2022 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_ttf.h
- *
- * Header file for SDL_ttf library
- *
- * This library is a wrapper around the excellent FreeType 2.0 library,
- * available at: https://www.freetype.org/
- *
- * Note: In many places, SDL_ttf will say "glyph" when it means "code point."
- * Unicode is hard, we learn as we go, and we apologize for adding to the
- * confusion.
- *
- */
- #ifndef SDL_TTF_H_
- #define SDL_TTF_H_
- #include "SDL.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_TTF_MAJOR_VERSION 2
- #define SDL_TTF_MINOR_VERSION 20
- #define SDL_TTF_PATCHLEVEL 0
- /**
- * This macro can be used to fill a version structure with the compile-time
- * version of the SDL_ttf library.
- */
- #define SDL_TTF_VERSION(X) \
- { \
- (X)->major = SDL_TTF_MAJOR_VERSION; \
- (X)->minor = SDL_TTF_MINOR_VERSION; \
- (X)->patch = SDL_TTF_PATCHLEVEL; \
- }
- /**
- * Backwards compatibility
- */
- #define TTF_MAJOR_VERSION SDL_TTF_MAJOR_VERSION
- #define TTF_MINOR_VERSION SDL_TTF_MINOR_VERSION
- #define TTF_PATCHLEVEL SDL_TTF_PATCHLEVEL
- #define TTF_VERSION(X) SDL_TTF_VERSION(X)
- #if SDL_TTF_MAJOR_VERSION < 3 && SDL_MAJOR_VERSION < 3
- /**
- * This is the version number macro for the current SDL_ttf version.
- *
- * In versions higher than 2.9.0, the minor version overflows into
- * the thousands digit: for example, 2.23.0 is encoded as 4300.
- * This macro will not be available in SDL 3.x or SDL_ttf 3.x.
- *
- * \deprecated, use SDL_TTF_VERSION_ATLEAST or SDL_TTF_VERSION instead.
- */
- #define SDL_TTF_COMPILEDVERSION \
- SDL_VERSIONNUM(SDL_TTF_MAJOR_VERSION, SDL_TTF_MINOR_VERSION, SDL_TTF_PATCHLEVEL)
- #endif /* SDL_TTF_MAJOR_VERSION < 3 && SDL_MAJOR_VERSION < 3 */
- /**
- * This macro will evaluate to true if compiled with SDL_ttf at least X.Y.Z.
- */
- #define SDL_TTF_VERSION_ATLEAST(X, Y, Z) \
- ((SDL_TTF_MAJOR_VERSION >= X) && \
- (SDL_TTF_MAJOR_VERSION > X || SDL_TTF_MINOR_VERSION >= Y) && \
- (SDL_TTF_MAJOR_VERSION > X || SDL_TTF_MINOR_VERSION > Y || SDL_TTF_PATCHLEVEL >= Z))
- /* Make sure this is defined (only available in newer SDL versions) */
- #ifndef SDL_DEPRECATED
- #define SDL_DEPRECATED
- #endif
- /**
- * Query the version of SDL_ttf that the program is linked against.
- *
- * This function gets the version of the dynamically linked SDL_ttf library.
- * This is separate from the SDL_TTF_VERSION() macro, which tells you what
- * version of the SDL_ttf headers you compiled against.
- *
- * This returns static internal data; do not free or modify it!
- *
- * \returns a pointer to the version information.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- */
- extern DECLSPEC const SDL_version * SDLCALL TTF_Linked_Version(void);
- /**
- * Query the version of the FreeType library in use.
- *
- * TTF_Init() should be called before calling this function.
- *
- * \param major to be filled in with the major version number. Can be NULL.
- * \param minor to be filled in with the minor version number. Can be NULL.
- * \param patch to be filled in with the param version number. Can be NULL.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- *
- * \sa TTF_Init
- */
- extern DECLSPEC void SDLCALL TTF_GetFreeTypeVersion(int *major, int *minor, int *patch);
- /**
- * Query the version of the HarfBuzz library in use.
- *
- * If HarfBuzz is not available, the version reported is 0.0.0.
- *
- * \param major to be filled in with the major version number. Can be NULL.
- * \param minor to be filled in with the minor version number. Can be NULL.
- * \param patch to be filled in with the param version number. Can be NULL.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- */
- extern DECLSPEC void SDLCALL TTF_GetHarfBuzzVersion(int *major, int *minor, int *patch);
- /**
- * ZERO WIDTH NO-BREAKSPACE (Unicode byte order mark)
- */
- #define UNICODE_BOM_NATIVE 0xFEFF
- #define UNICODE_BOM_SWAPPED 0xFFFE
- /**
- * Tell SDL_ttf whether UNICODE text is generally byteswapped.
- *
- * A UNICODE BOM character in a string will override this setting for the
- * remainder of that string.
- *
- * \param swapped boolean to indicate whether text is byteswapped
- *
- * \since This function is available since SDL_ttf 2.0.12.
- */
- extern DECLSPEC void SDLCALL TTF_ByteSwappedUNICODE(SDL_bool swapped);
- /**
- * The internal structure containing font information. Opaque data!
- */
- typedef struct _TTF_Font TTF_Font;
- /**
- * Initialize SDL_ttf.
- *
- * You must successfully call this function before it is safe to call any
- * other function in this library, with one exception: a human-readable error
- * message can be retrieved from TTF_GetError() if this function fails.
- *
- * SDL must be initialized before calls to functions in this library, because
- * this library uses utility functions from the SDL library.
- *
- * It is safe to call this more than once; the library keeps a counter of init
- * calls, and decrements it on each call to TTF_Quit, so you must pair your
- * init and quit calls.
- *
- * \returns 0 on success, -1 on error.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_Quit
- */
- extern DECLSPEC int SDLCALL TTF_Init(void);
- /**
- * Create a font from a file, using a specified point size.
- *
- * Some .fon fonts will have several sizes embedded in the file, so the point
- * size becomes the index of choosing which size. If the value is too high,
- * the last indexed size will be the default.
- *
- * When done with the returned TTF_Font, use TTF_CloseFont() to dispose of it.
- *
- * \param file path to font file.
- * \param ptsize point size to use for the newly-opened font.
- * \returns a valid TTF_Font, or NULL on error.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_CloseFont
- */
- extern DECLSPEC TTF_Font * SDLCALL TTF_OpenFont(const char *file, int ptsize);
- /**
- * Create a font from a file, using a specified face index.
- *
- * Some .fon fonts will have several sizes embedded in the file, so the point
- * size becomes the index of choosing which size. If the value is too high,
- * the last indexed size will be the default.
- *
- * Some fonts have multiple "faces" included. The index specifies which face
- * to use from the font file. Font files with only one face should specify
- * zero for the index.
- *
- * When done with the returned TTF_Font, use TTF_CloseFont() to dispose of it.
- *
- * \param file path to font file.
- * \param ptsize point size to use for the newly-opened font.
- * \param index index of the face in the font file.
- * \returns a valid TTF_Font, or NULL on error.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_CloseFont
- */
- extern DECLSPEC TTF_Font * SDLCALL TTF_OpenFontIndex(const char *file, int ptsize, long index);
- /**
- * Create a font from an SDL_RWops, using a specified point size.
- *
- * Some .fon fonts will have several sizes embedded in the file, so the point
- * size becomes the index of choosing which size. If the value is too high,
- * the last indexed size will be the default.
- *
- * If `freesrc` is non-zero, the RWops will be closed before returning,
- * whether this function succeeds or not. SDL_ttf reads everything it needs
- * from the RWops during this call in any case.
- *
- * When done with the returned TTF_Font, use TTF_CloseFont() to dispose of it.
- *
- * \param src an SDL_RWops to provide a font file's data.
- * \param freesrc non-zero to close the RWops before returning, zero to leave
- * it open.
- * \param ptsize point size to use for the newly-opened font.
- * \returns a valid TTF_Font, or NULL on error.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_CloseFont
- */
- extern DECLSPEC TTF_Font * SDLCALL TTF_OpenFontRW(SDL_RWops *src, int freesrc, int ptsize);
- /**
- * Create a font from an SDL_RWops, using a specified face index.
- *
- * Some .fon fonts will have several sizes embedded in the file, so the point
- * size becomes the index of choosing which size. If the value is too high,
- * the last indexed size will be the default.
- *
- * If `freesrc` is non-zero, the RWops will be closed before returning,
- * whether this function succeeds or not. SDL_ttf reads everything it needs
- * from the RWops during this call in any case.
- *
- * Some fonts have multiple "faces" included. The index specifies which face
- * to use from the font file. Font files with only one face should specify
- * zero for the index.
- *
- * When done with the returned TTF_Font, use TTF_CloseFont() to dispose of it.
- *
- * \param src an SDL_RWops to provide a font file's data.
- * \param freesrc non-zero to close the RWops before returning, zero to leave
- * it open.
- * \param ptsize point size to use for the newly-opened font.
- * \param index index of the face in the font file.
- * \returns a valid TTF_Font, or NULL on error.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_CloseFont
- */
- extern DECLSPEC TTF_Font * SDLCALL TTF_OpenFontIndexRW(SDL_RWops *src, int freesrc, int ptsize, long index);
- /**
- * Create a font from a file, using target resolutions (in DPI).
- *
- * DPI scaling only applies to scalable fonts (e.g. TrueType).
- *
- * Some .fon fonts will have several sizes embedded in the file, so the point
- * size becomes the index of choosing which size. If the value is too high,
- * the last indexed size will be the default.
- *
- * When done with the returned TTF_Font, use TTF_CloseFont() to dispose of it.
- *
- * \param file path to font file.
- * \param ptsize point size to use for the newly-opened font.
- * \param hdpi the target horizontal DPI.
- * \param vdpi the target vertical DPI.
- * \returns a valid TTF_Font, or NULL on error.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- *
- * \sa TTF_CloseFont
- */
- extern DECLSPEC TTF_Font * SDLCALL TTF_OpenFontDPI(const char *file, int ptsize, unsigned int hdpi, unsigned int vdpi);
- /**
- * Create a font from a file, using target resolutions (in DPI).
- *
- * DPI scaling only applies to scalable fonts (e.g. TrueType).
- *
- * Some .fon fonts will have several sizes embedded in the file, so the point
- * size becomes the index of choosing which size. If the value is too high,
- * the last indexed size will be the default.
- *
- * Some fonts have multiple "faces" included. The index specifies which face
- * to use from the font file. Font files with only one face should specify
- * zero for the index.
- *
- * When done with the returned TTF_Font, use TTF_CloseFont() to dispose of it.
- *
- * \param file path to font file.
- * \param ptsize point size to use for the newly-opened font.
- * \param index index of the face in the font file.
- * \param hdpi the target horizontal DPI.
- * \param vdpi the target vertical DPI.
- * \returns a valid TTF_Font, or NULL on error.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- *
- * \sa TTF_CloseFont
- */
- extern DECLSPEC TTF_Font * SDLCALL TTF_OpenFontIndexDPI(const char *file, int ptsize, long index, unsigned int hdpi, unsigned int vdpi);
- /**
- * Opens a font from an SDL_RWops with target resolutions (in DPI).
- *
- * DPI scaling only applies to scalable fonts (e.g. TrueType).
- *
- * Some .fon fonts will have several sizes embedded in the file, so the point
- * size becomes the index of choosing which size. If the value is too high,
- * the last indexed size will be the default.
- *
- * If `freesrc` is non-zero, the RWops will be closed before returning,
- * whether this function succeeds or not. SDL_ttf reads everything it needs
- * from the RWops during this call in any case.
- *
- * When done with the returned TTF_Font, use TTF_CloseFont() to dispose of it.
- *
- * \param src an SDL_RWops to provide a font file's data.
- * \param freesrc non-zero to close the RWops before returning, zero to leave
- * it open.
- * \param ptsize point size to use for the newly-opened font.
- * \param hdpi the target horizontal DPI.
- * \param vdpi the target vertical DPI.
- * \returns a valid TTF_Font, or NULL on error.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- *
- * \sa TTF_CloseFont
- */
- extern DECLSPEC TTF_Font * SDLCALL TTF_OpenFontDPIRW(SDL_RWops *src, int freesrc, int ptsize, unsigned int hdpi, unsigned int vdpi);
- /**
- * Opens a font from an SDL_RWops with target resolutions (in DPI).
- *
- * DPI scaling only applies to scalable fonts (e.g. TrueType).
- *
- * Some .fon fonts will have several sizes embedded in the file, so the point
- * size becomes the index of choosing which size. If the value is too high,
- * the last indexed size will be the default.
- *
- * If `freesrc` is non-zero, the RWops will be closed before returning,
- * whether this function succeeds or not. SDL_ttf reads everything it needs
- * from the RWops during this call in any case.
- *
- * Some fonts have multiple "faces" included. The index specifies which face
- * to use from the font file. Font files with only one face should specify
- * zero for the index.
- *
- * When done with the returned TTF_Font, use TTF_CloseFont() to dispose of it.
- *
- * \param src an SDL_RWops to provide a font file's data.
- * \param freesrc non-zero to close the RWops before returning, zero to leave
- * it open.
- * \param ptsize point size to use for the newly-opened font.
- * \param index index of the face in the font file.
- * \param hdpi the target horizontal DPI.
- * \param vdpi the target vertical DPI.
- * \returns a valid TTF_Font, or NULL on error.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- *
- * \sa TTF_CloseFont
- */
- extern DECLSPEC TTF_Font * SDLCALL TTF_OpenFontIndexDPIRW(SDL_RWops *src, int freesrc, int ptsize, long index, unsigned int hdpi, unsigned int vdpi);
- /**
- * Set a font's size dynamically.
- *
- * This clears already-generated glyphs, if any, from the cache.
- *
- * \param font the font to resize.
- * \param ptsize the new point size.
- * \returns 0 if successful, -1 on error
- *
- * \since This function is available since SDL_ttf 2.0.18.
- */
- extern DECLSPEC int SDLCALL TTF_SetFontSize(TTF_Font *font, int ptsize);
- /**
- * Set font size dynamically with target resolutions (in DPI).
- *
- * This clears already-generated glyphs, if any, from the cache.
- *
- * \param font the font to resize.
- * \param ptsize the new point size.
- * \param hdpi the target horizontal DPI.
- * \param vdpi the target vertical DPI.
- * \returns 0 if successful, -1 on error.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- */
- extern DECLSPEC int SDLCALL TTF_SetFontSizeDPI(TTF_Font *font, int ptsize, unsigned int hdpi, unsigned int vdpi);
- /**
- * Font style flags
- */
- #define TTF_STYLE_NORMAL 0x00
- #define TTF_STYLE_BOLD 0x01
- #define TTF_STYLE_ITALIC 0x02
- #define TTF_STYLE_UNDERLINE 0x04
- #define TTF_STYLE_STRIKETHROUGH 0x08
- /**
- * Query a font's current style.
- *
- * The font styles are a set of bit flags, OR'd together:
- *
- * - `TTF_STYLE_NORMAL` (is zero)
- * - `TTF_STYLE_BOLD`
- * - `TTF_STYLE_ITALIC`
- * - `TTF_STYLE_UNDERLINE`
- * - `TTF_STYLE_STRIKETHROUGH`
- *
- * \param font the font to query.
- * \returns the current font style, as a set of bit flags.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_SetFontStyle
- */
- extern DECLSPEC int SDLCALL TTF_GetFontStyle(const TTF_Font *font);
- /**
- * Set a font's current style.
- *
- * Setting the style clears already-generated glyphs, if any, from the cache.
- *
- * The font styles are a set of bit flags, OR'd together:
- *
- * - `TTF_STYLE_NORMAL` (is zero)
- * - `TTF_STYLE_BOLD`
- * - `TTF_STYLE_ITALIC`
- * - `TTF_STYLE_UNDERLINE`
- * - `TTF_STYLE_STRIKETHROUGH`
- *
- * \param font the font to set a new style on.
- * \param style the new style values to set, OR'd together.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_GetFontStyle
- */
- extern DECLSPEC void SDLCALL TTF_SetFontStyle(TTF_Font *font, int style);
- /**
- * Query a font's current outline.
- *
- * \param font the font to query.
- * \returns the font's current outline value.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_SetFontOutline
- */
- extern DECLSPEC int SDLCALL TTF_GetFontOutline(const TTF_Font *font);
- /**
- * Set a font's current outline.
- *
- * \param font the font to set a new outline on.
- * \param outline positive outline value, 0 to default.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_GetFontOutline
- */
- extern DECLSPEC void SDLCALL TTF_SetFontOutline(TTF_Font *font, int outline);
- /**
- * Hinting flags
- */
- #define TTF_HINTING_NORMAL 0
- #define TTF_HINTING_LIGHT 1
- #define TTF_HINTING_MONO 2
- #define TTF_HINTING_NONE 3
- #define TTF_HINTING_LIGHT_SUBPIXEL 4
- /**
- * Query a font's current FreeType hinter setting.
- *
- * The hinter setting is a single value:
- *
- * - `TTF_HINTING_NORMAL`
- * - `TTF_HINTING_LIGHT`
- * - `TTF_HINTING_MONO`
- * - `TTF_HINTING_NONE`
- * - `TTF_HINTING_LIGHT_SUBPIXEL` (available in SDL_ttf 2.0.18 and later)
- *
- * \param font the font to query.
- * \returns the font's current hinter value.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_SetFontHinting
- */
- extern DECLSPEC int SDLCALL TTF_GetFontHinting(const TTF_Font *font);
- /**
- * Set a font's current hinter setting.
- *
- * Setting it clears already-generated glyphs, if any, from the cache.
- *
- * The hinter setting is a single value:
- *
- * - `TTF_HINTING_NORMAL`
- * - `TTF_HINTING_LIGHT`
- * - `TTF_HINTING_MONO`
- * - `TTF_HINTING_NONE`
- * - `TTF_HINTING_LIGHT_SUBPIXEL` (available in SDL_ttf 2.0.18 and later)
- *
- * \param font the font to set a new hinter setting on.
- * \param hinting the new hinter setting.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_GetFontHinting
- */
- extern DECLSPEC void SDLCALL TTF_SetFontHinting(TTF_Font *font, int hinting);
- /**
- * Special layout option for rendering wrapped text
- */
- #define TTF_WRAPPED_ALIGN_LEFT 0
- #define TTF_WRAPPED_ALIGN_CENTER 1
- #define TTF_WRAPPED_ALIGN_RIGHT 2
- /**
- * Query a font's current wrap alignment option.
- *
- * The wrap alignment option can be one of the following:
- *
- * - `TTF_WRAPPED_ALIGN_LEFT`
- * - `TTF_WRAPPED_ALIGN_CENTER`
- * - `TTF_WRAPPED_ALIGN_RIGHT`
- *
- * \param font the font to query.
- * \returns the font's current wrap alignment option.
- *
- * \since This function is available since SDL_ttf 2.20.0.
- *
- * \sa TTF_SetFontWrappedAlign
- */
- extern DECLSPEC int SDLCALL TTF_GetFontWrappedAlign(const TTF_Font *font);
- /**
- * Set a font's current wrap alignment option.
- *
- * The wrap alignment option can be one of the following:
- *
- * - `TTF_WRAPPED_ALIGN_LEFT`
- * - `TTF_WRAPPED_ALIGN_CENTER`
- * - `TTF_WRAPPED_ALIGN_RIGHT`
- *
- * \param font the font to set a new wrap alignment option on.
- * \param align the new wrap alignment option.
- *
- * \since This function is available since SDL_ttf 2.20.0.
- *
- * \sa TTF_GetFontWrappedAlign
- */
- extern DECLSPEC void SDLCALL TTF_SetFontWrappedAlign(TTF_Font *font, int align);
- /**
- * Query the total height of a font.
- *
- * This is usually equal to point size.
- *
- * \param font the font to query.
- * \returns the font's height.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- */
- extern DECLSPEC int SDLCALL TTF_FontHeight(const TTF_Font *font);
- /**
- * Query the offset from the baseline to the top of a font.
- *
- * This is a positive value, relative to the baseline.
- *
- * \param font the font to query.
- * \returns the font's ascent.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- */
- extern DECLSPEC int SDLCALL TTF_FontAscent(const TTF_Font *font);
- /**
- * Query the offset from the baseline to the bottom of a font.
- *
- * This is a negative value, relative to the baseline.
- *
- * \param font the font to query.
- * \returns the font's descent.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- */
- extern DECLSPEC int SDLCALL TTF_FontDescent(const TTF_Font *font);
- /**
- * Query the recommended spacing between lines of text for a font.
- *
- * \param font the font to query.
- * \returns the font's recommended spacing.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- */
- extern DECLSPEC int SDLCALL TTF_FontLineSkip(const TTF_Font *font);
- /**
- * Query whether or not kerning is allowed for a font.
- *
- * \param font the font to query.
- * \returns non-zero if kerning is enabled, zero otherwise.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- */
- extern DECLSPEC int SDLCALL TTF_GetFontKerning(const TTF_Font *font);
- /**
- * Set if kerning is allowed for a font.
- *
- * Newly-opened fonts default to allowing kerning. This is generally a good
- * policy unless you have a strong reason to disable it, as it tends to
- * produce better rendering (with kerning disabled, some fonts might render
- * the word `kerning` as something that looks like `keming` for example).
- *
- * \param font the font to set kerning on.
- * \param allowed non-zero to allow kerning, zero to disallow.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- */
- extern DECLSPEC void SDLCALL TTF_SetFontKerning(TTF_Font *font, int allowed);
- /**
- * Query the number of faces of a font.
- *
- * \param font the font to query.
- * \returns the number of FreeType font faces.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- */
- extern DECLSPEC long SDLCALL TTF_FontFaces(const TTF_Font *font);
- /**
- * Query whether a font is fixed-width.
- *
- * A "fixed-width" font means all glyphs are the same width across; a
- * lowercase 'i' will be the same size across as a capital 'W', for example.
- * This is common for terminals and text editors, and other apps that treat
- * text as a grid. Most other things (WYSIWYG word processors, web pages, etc)
- * are more likely to not be fixed-width in most cases.
- *
- * \param font the font to query.
- * \returns non-zero if fixed-width, zero if not.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- */
- extern DECLSPEC int SDLCALL TTF_FontFaceIsFixedWidth(const TTF_Font *font);
- /**
- * Query a font's family name.
- *
- * This string is dictated by the contents of the font file.
- *
- * Note that the returned string is to internal storage, and should not be
- * modifed or free'd by the caller. The string becomes invalid, with the rest
- * of the font, when `font` is handed to TTF_CloseFont().
- *
- * \param font the font to query.
- * \returns the font's family name.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- */
- extern DECLSPEC const char * SDLCALL TTF_FontFaceFamilyName(const TTF_Font *font);
- /**
- * Query a font's style name.
- *
- * This string is dictated by the contents of the font file.
- *
- * Note that the returned string is to internal storage, and should not be
- * modifed or free'd by the caller. The string becomes invalid, with the rest
- * of the font, when `font` is handed to TTF_CloseFont().
- *
- * \param font the font to query.
- * \returns the font's style name.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- */
- extern DECLSPEC const char * SDLCALL TTF_FontFaceStyleName(const TTF_Font *font);
- /**
- * Check whether a glyph is provided by the font for a 16-bit codepoint.
- *
- * Note that this version of the function takes a 16-bit character code, which
- * covers the Basic Multilingual Plane, but is insufficient to cover the
- * entire set of possible Unicode values, including emoji glyphs. You should
- * use TTF_GlyphIsProvided32() instead, which offers the same functionality
- * but takes a 32-bit codepoint instead.
- *
- * The only reason to use this function is that it was available since the
- * beginning of time, more or less.
- *
- * \param font the font to query.
- * \param ch the character code to check.
- * \returns non-zero if font provides a glyph for this character, zero if not.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_GlyphIsProvided32
- */
- extern DECLSPEC int SDLCALL TTF_GlyphIsProvided(TTF_Font *font, Uint16 ch);
- /**
- * Check whether a glyph is provided by the font for a 32-bit codepoint.
- *
- * This is the same as TTF_GlyphIsProvided(), but takes a 32-bit character
- * instead of 16-bit, and thus can query a larger range. If you are sure
- * you'll have an SDL_ttf that's version 2.0.18 or newer, there's no reason
- * not to use this function exclusively.
- *
- * \param font the font to query.
- * \param ch the character code to check.
- * \returns non-zero if font provides a glyph for this character, zero if not.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- */
- extern DECLSPEC int SDLCALL TTF_GlyphIsProvided32(TTF_Font *font, Uint32 ch);
- /**
- * Query the metrics (dimensions) of a font's 16-bit glyph.
- *
- * To understand what these metrics mean, here is a useful link:
- *
- * https://freetype.sourceforge.net/freetype2/docs/tutorial/step2.html
- *
- * Note that this version of the function takes a 16-bit character code, which
- * covers the Basic Multilingual Plane, but is insufficient to cover the
- * entire set of possible Unicode values, including emoji glyphs. You should
- * use TTF_GlyphMetrics32() instead, which offers the same functionality but
- * takes a 32-bit codepoint instead.
- *
- * The only reason to use this function is that it was available since the
- * beginning of time, more or less.
- *
- * \param font the font to query.
- * \param ch the character code to check.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_GlyphMetrics32
- */
- extern DECLSPEC int SDLCALL TTF_GlyphMetrics(TTF_Font *font, Uint16 ch,
- int *minx, int *maxx,
- int *miny, int *maxy, int *advance);
- /**
- * Query the metrics (dimensions) of a font's 32-bit glyph.
- *
- * To understand what these metrics mean, here is a useful link:
- *
- * https://freetype.sourceforge.net/freetype2/docs/tutorial/step2.html
- *
- * This is the same as TTF_GlyphMetrics(), but takes a 32-bit character
- * instead of 16-bit, and thus can query a larger range. If you are sure
- * you'll have an SDL_ttf that's version 2.0.18 or newer, there's no reason
- * not to use this function exclusively.
- *
- * \param font the font to query.
- * \param ch the character code to check.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- */
- extern DECLSPEC int SDLCALL TTF_GlyphMetrics32(TTF_Font *font, Uint32 ch,
- int *minx, int *maxx,
- int *miny, int *maxy, int *advance);
- /**
- * Calculate the dimensions of a rendered string of Latin1 text.
- *
- * This will report the width and height, in pixels, of the space that the
- * specified string will take to fully render.
- *
- * This does not need to render the string to do this calculation.
- *
- * You almost certainly want TTF_SizeUTF8() unless you're sure you have a
- * 1-byte Latin1 encoding. US ASCII characters will work with either function,
- * but most other Unicode characters packed into a `const char *` will need
- * UTF-8.
- *
- * \param font the font to query.
- * \param text text to calculate, in Latin1 encoding.
- * \param w will be filled with width, in pixels, on return.
- * \param h will be filled with height, in pixels, on return.
- * \returns 0 if successful, -1 on error.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_SizeUTF8
- * \sa TTF_SizeUNICODE
- */
- extern DECLSPEC int SDLCALL TTF_SizeText(TTF_Font *font, const char *text, int *w, int *h);
- /**
- * Calculate the dimensions of a rendered string of UTF-8 text.
- *
- * This will report the width and height, in pixels, of the space that the
- * specified string will take to fully render.
- *
- * This does not need to render the string to do this calculation.
- *
- * \param font the font to query.
- * \param text text to calculate, in Latin1 encoding.
- * \param w will be filled with width, in pixels, on return.
- * \param h will be filled with height, in pixels, on return.
- * \returns 0 if successful, -1 on error.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_SizeUNICODE
- */
- extern DECLSPEC int SDLCALL TTF_SizeUTF8(TTF_Font *font, const char *text, int *w, int *h);
- /**
- * Calculate the dimensions of a rendered string of UCS-2 text.
- *
- * This will report the width and height, in pixels, of the space that the
- * specified string will take to fully render.
- *
- * This does not need to render the string to do this calculation.
- *
- * Please note that this function is named "Unicode" but currently expects
- * UCS-2 encoding (16 bits per codepoint). This does not give you access to
- * large Unicode values, such as emoji glyphs. These codepoints are accessible
- * through the UTF-8 version of this function.
- *
- * \param font the font to query.
- * \param text text to calculate, in UCS-2 encoding.
- * \param w will be filled with width, in pixels, on return.
- * \param h will be filled with height, in pixels, on return.
- * \returns 0 if successful, -1 on error.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_SizeUTF8
- */
- extern DECLSPEC int SDLCALL TTF_SizeUNICODE(TTF_Font *font, const Uint16 *text, int *w, int *h);
- /**
- * Calculate how much of a Latin1 string will fit in a given width.
- *
- * This reports the number of characters that can be rendered before reaching
- * `measure_width`.
- *
- * This does not need to render the string to do this calculation.
- *
- * You almost certainly want TTF_MeasureUTF8() unless you're sure you have a
- * 1-byte Latin1 encoding. US ASCII characters will work with either function,
- * but most other Unicode characters packed into a `const char *` will need
- * UTF-8.
- *
- * \param font the font to query.
- * \param text text to calculate, in Latin1 encoding.
- * \param measure_width maximum width, in pixels, available for the string.
- * \param count on return, filled with number of characters that can be
- * rendered.
- * \param extent on return, filled with latest calculated width.
- * \returns 0 if successful, -1 on error.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- *
- * \sa TTF_MeasureText
- * \sa TTF_MeasureUTF8
- * \sa TTF_MeasureUNICODE
- */
- extern DECLSPEC int SDLCALL TTF_MeasureText(TTF_Font *font, const char *text, int measure_width, int *extent, int *count);
- /**
- * Calculate how much of a UTF-8 string will fit in a given width.
- *
- * This reports the number of characters that can be rendered before reaching
- * `measure_width`.
- *
- * This does not need to render the string to do this calculation.
- *
- * \param font the font to query.
- * \param text text to calculate, in UTF-8 encoding.
- * \param measure_width maximum width, in pixels, available for the string.
- * \param count on return, filled with number of characters that can be
- * rendered.
- * \param extent on return, filled with latest calculated width.
- * \returns 0 if successful, -1 on error.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- *
- * \sa TTF_MeasureText
- * \sa TTF_MeasureUTF8
- * \sa TTF_MeasureUNICODE
- */
- extern DECLSPEC int SDLCALL TTF_MeasureUTF8(TTF_Font *font, const char *text, int measure_width, int *extent, int *count);
- /**
- * Calculate how much of a UCS-2 string will fit in a given width.
- *
- * This reports the number of characters that can be rendered before reaching
- * `measure_width`.
- *
- * This does not need to render the string to do this calculation.
- *
- * Please note that this function is named "Unicode" but currently expects
- * UCS-2 encoding (16 bits per codepoint). This does not give you access to
- * large Unicode values, such as emoji glyphs. These codepoints are accessible
- * through the UTF-8 version of this function.
- *
- * \param font the font to query.
- * \param text text to calculate, in UCS-2 encoding.
- * \param measure_width maximum width, in pixels, available for the string.
- * \param count on return, filled with number of characters that can be
- * rendered.
- * \param extent on return, filled with latest calculated width.
- * \returns 0 if successful, -1 on error.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- *
- * \sa TTF_MeasureText
- * \sa TTF_MeasureUTF8
- * \sa TTF_MeasureUNICODE
- */
- extern DECLSPEC int SDLCALL TTF_MeasureUNICODE(TTF_Font *font, const Uint16 *text, int measure_width, int *extent, int *count);
- /**
- * Render Latin1 text at fast quality to a new 8-bit surface.
- *
- * This function will allocate a new 8-bit, palettized surface. The surface's
- * 0 pixel will be the colorkey, giving a transparent background. The 1 pixel
- * will be set to the text color.
- *
- * This will not word-wrap the string; you'll get a surface with a single line
- * of text, as long as the string requires. You can use
- * TTF_RenderText_Solid_Wrapped() instead if you need to wrap the output to
- * multiple lines.
- *
- * This will not wrap on newline characters.
- *
- * You almost certainly want TTF_RenderUTF8_Solid() unless you're sure you
- * have a 1-byte Latin1 encoding. US ASCII characters will work with either
- * function, but most other Unicode characters packed into a `const char *`
- * will need UTF-8.
- *
- * You can render at other quality levels with TTF_RenderText_Shaded,
- * TTF_RenderText_Blended, and TTF_RenderText_LCD.
- *
- * \param font the font to render with.
- * \param text text to render, in Latin1 encoding.
- * \param fg the foreground color for the text.
- * \returns a new 8-bit, palettized surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_RenderUTF8_Solid
- * \sa TTF_RenderUNICODE_Solid
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderText_Solid(TTF_Font *font,
- const char *text, SDL_Color fg);
- /**
- * Render UTF-8 text at fast quality to a new 8-bit surface.
- *
- * This function will allocate a new 8-bit, palettized surface. The surface's
- * 0 pixel will be the colorkey, giving a transparent background. The 1 pixel
- * will be set to the text color.
- *
- * This will not word-wrap the string; you'll get a surface with a single line
- * of text, as long as the string requires. You can use
- * TTF_RenderUTF8_Solid_Wrapped() instead if you need to wrap the output to
- * multiple lines.
- *
- * This will not wrap on newline characters.
- *
- * You can render at other quality levels with TTF_RenderUTF8_Shaded,
- * TTF_RenderUTF8_Blended, and TTF_RenderUTF8_LCD.
- *
- * \param font the font to render with.
- * \param text text to render, in UTF-8 encoding.
- * \param fg the foreground color for the text.
- * \returns a new 8-bit, palettized surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_RenderUTF8_Shaded
- * \sa TTF_RenderUTF8_Blended
- * \sa TTF_RenderUTF8_LCD
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderUTF8_Solid(TTF_Font *font,
- const char *text, SDL_Color fg);
- /**
- * Render UCS-2 text at fast quality to a new 8-bit surface.
- *
- * This function will allocate a new 8-bit, palettized surface. The surface's
- * 0 pixel will be the colorkey, giving a transparent background. The 1 pixel
- * will be set to the text color.
- *
- * This will not word-wrap the string; you'll get a surface with a single line
- * of text, as long as the string requires. You can use
- * TTF_RenderUNICODE_Solid_Wrapped() instead if you need to wrap the output to
- * multiple lines.
- *
- * This will not wrap on newline characters.
- *
- * Please note that this function is named "Unicode" but currently expects
- * UCS-2 encoding (16 bits per codepoint). This does not give you access to
- * large Unicode values, such as emoji glyphs. These codepoints are accessible
- * through the UTF-8 version of this function.
- *
- * You can render at other quality levels with TTF_RenderUNICODE_Shaded,
- * TTF_RenderUNICODE_Blended, and TTF_RenderUNICODE_LCD.
- *
- * \param font the font to render with.
- * \param text text to render, in UCS-2 encoding.
- * \param fg the foreground color for the text.
- * \returns a new 8-bit, palettized surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_RenderUTF8_Solid
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderUNICODE_Solid(TTF_Font *font,
- const Uint16 *text, SDL_Color fg);
- /**
- * Render word-wrapped Latin1 text at fast quality to a new 8-bit surface.
- *
- * This function will allocate a new 8-bit, palettized surface. The surface's
- * 0 pixel will be the colorkey, giving a transparent background. The 1 pixel
- * will be set to the text color.
- *
- * Text is wrapped to multiple lines on line endings and on word boundaries if
- * it extends beyond `wrapLength` in pixels.
- *
- * If wrapLength is 0, this function will only wrap on newline characters.
- *
- * You almost certainly want TTF_RenderUTF8_Solid_Wrapped() unless you're sure
- * you have a 1-byte Latin1 encoding. US ASCII characters will work with
- * either function, but most other Unicode characters packed into a `const
- * char *` will need UTF-8.
- *
- * You can render at other quality levels with TTF_RenderText_Shaded_Wrapped,
- * TTF_RenderText_Blended_Wrapped, and TTF_RenderText_LCD_Wrapped.
- *
- * \param font the font to render with.
- * \param text text to render, in Latin1 encoding.
- * \param fg the foreground color for the text.
- * \returns a new 8-bit, palettized surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- *
- * \sa TTF_RenderUTF8_Solid_Wrapped
- * \sa TTF_RenderUNICODE_Solid_Wrapped
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderText_Solid_Wrapped(TTF_Font *font,
- const char *text, SDL_Color fg, Uint32 wrapLength);
- /**
- * Render word-wrapped UTF-8 text at fast quality to a new 8-bit surface.
- *
- * This function will allocate a new 8-bit, palettized surface. The surface's
- * 0 pixel will be the colorkey, giving a transparent background. The 1 pixel
- * will be set to the text color.
- *
- * Text is wrapped to multiple lines on line endings and on word boundaries if
- * it extends beyond `wrapLength` in pixels.
- *
- * If wrapLength is 0, this function will only wrap on newline characters.
- *
- * You can render at other quality levels with TTF_RenderUTF8_Shaded_Wrapped,
- * TTF_RenderUTF8_Blended_Wrapped, and TTF_RenderUTF8_LCD_Wrapped.
- *
- * \param font the font to render with.
- * \param text text to render, in UTF-8 encoding.
- * \param fg the foreground color for the text.
- * \returns a new 8-bit, palettized surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- *
- * \sa TTF_RenderUTF8_Shaded_Wrapped
- * \sa TTF_RenderUTF8_Blended_Wrapped
- * \sa TTF_RenderUTF8_LCD_Wrapped
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderUTF8_Solid_Wrapped(TTF_Font *font,
- const char *text, SDL_Color fg, Uint32 wrapLength);
- /**
- * Render word-wrapped UCS-2 text at fast quality to a new 8-bit surface.
- *
- * This function will allocate a new 8-bit, palettized surface. The surface's
- * 0 pixel will be the colorkey, giving a transparent background. The 1 pixel
- * will be set to the text color.
- *
- * Text is wrapped to multiple lines on line endings and on word boundaries if
- * it extends beyond `wrapLength` in pixels.
- *
- * If wrapLength is 0, this function will only wrap on newline characters.
- *
- * Please note that this function is named "Unicode" but currently expects
- * UCS-2 encoding (16 bits per codepoint). This does not give you access to
- * large Unicode values, such as emoji glyphs. These codepoints are accessible
- * through the UTF-8 version of this function.
- *
- * You can render at other quality levels with
- * TTF_RenderUNICODE_Shaded_Wrapped, TTF_RenderUNICODE_Blended_Wrapped, and
- * TTF_RenderUNICODE_LCD_Wrapped.
- *
- * \param font the font to render with.
- * \param text text to render, in UCS-2 encoding.
- * \param fg the foreground color for the text.
- * \returns a new 8-bit, palettized surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- *
- * \sa TTF_RenderUTF8_Solid_Wrapped
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderUNICODE_Solid_Wrapped(TTF_Font *font,
- const Uint16 *text, SDL_Color fg, Uint32 wrapLength);
- /**
- * Render a single 16-bit glyph at fast quality to a new 8-bit surface.
- *
- * This function will allocate a new 8-bit, palettized surface. The surface's
- * 0 pixel will be the colorkey, giving a transparent background. The 1 pixel
- * will be set to the text color.
- *
- * The glyph is rendered without any padding or centering in the X direction,
- * and aligned normally in the Y direction.
- *
- * Note that this version of the function takes a 16-bit character code, which
- * covers the Basic Multilingual Plane, but is insufficient to cover the
- * entire set of possible Unicode values, including emoji glyphs. You should
- * use TTF_RenderGlyph32_Solid() instead, which offers the same functionality
- * but takes a 32-bit codepoint instead.
- *
- * The only reason to use this function is that it was available since the
- * beginning of time, more or less.
- *
- * You can render at other quality levels with TTF_RenderGlyph_Shaded,
- * TTF_RenderGlyph_Blended, and TTF_RenderGlyph_LCD.
- *
- * \param font the font to render with.
- * \param ch the character to render.
- * \param fg the foreground color for the text.
- * \returns a new 8-bit, palettized surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_RenderGlyph32_Solid
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderGlyph_Solid(TTF_Font *font,
- Uint16 ch, SDL_Color fg);
- /**
- * Render a single 32-bit glyph at fast quality to a new 8-bit surface.
- *
- * This function will allocate a new 8-bit, palettized surface. The surface's
- * 0 pixel will be the colorkey, giving a transparent background. The 1 pixel
- * will be set to the text color.
- *
- * The glyph is rendered without any padding or centering in the X direction,
- * and aligned normally in the Y direction.
- *
- * This is the same as TTF_RenderGlyph_Solid(), but takes a 32-bit character
- * instead of 16-bit, and thus can render a larger range. If you are sure
- * you'll have an SDL_ttf that's version 2.0.18 or newer, there's no reason
- * not to use this function exclusively.
- *
- * You can render at other quality levels with TTF_RenderGlyph32_Shaded,
- * TTF_RenderGlyph32_Blended, and TTF_RenderGlyph32_LCD.
- *
- * \param font the font to render with.
- * \param ch the character to render.
- * \param fg the foreground color for the text.
- * \returns a new 8-bit, palettized surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- *
- * \sa TTF_RenderGlyph32_Shaded
- * \sa TTF_RenderGlyph32_Blended
- * \sa TTF_RenderGlyph32_LCD
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderGlyph32_Solid(TTF_Font *font,
- Uint32 ch, SDL_Color fg);
- /**
- * Render Latin1 text at high quality to a new 8-bit surface.
- *
- * This function will allocate a new 8-bit, palettized surface. The surface's
- * 0 pixel will be the specified background color, while other pixels have
- * varying degrees of the foreground color. This function returns the new
- * surface, or NULL if there was an error.
- *
- * This will not word-wrap the string; you'll get a surface with a single line
- * of text, as long as the string requires. You can use
- * TTF_RenderText_Shaded_Wrapped() instead if you need to wrap the output to
- * multiple lines.
- *
- * This will not wrap on newline characters.
- *
- * You almost certainly want TTF_RenderUTF8_Shaded() unless you're sure you
- * have a 1-byte Latin1 encoding. US ASCII characters will work with either
- * function, but most other Unicode characters packed into a `const char *`
- * will need UTF-8.
- *
- * You can render at other quality levels with TTF_RenderText_Solid,
- * TTF_RenderText_Blended, and TTF_RenderText_LCD.
- *
- * \param font the font to render with.
- * \param text text to render, in Latin1 encoding.
- * \param fg the foreground color for the text.
- * \returns a new 8-bit, palettized surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_RenderUTF8_Shaded
- * \sa TTF_RenderUNICODE_Shaded
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderText_Shaded(TTF_Font *font,
- const char *text, SDL_Color fg, SDL_Color bg);
- /**
- * Render UTF-8 text at high quality to a new 8-bit surface.
- *
- * This function will allocate a new 8-bit, palettized surface. The surface's
- * 0 pixel will be the specified background color, while other pixels have
- * varying degrees of the foreground color. This function returns the new
- * surface, or NULL if there was an error.
- *
- * This will not word-wrap the string; you'll get a surface with a single line
- * of text, as long as the string requires. You can use
- * TTF_RenderUTF8_Shaded_Wrapped() instead if you need to wrap the output to
- * multiple lines.
- *
- * This will not wrap on newline characters.
- *
- * You can render at other quality levels with TTF_RenderUTF8_Solid,
- * TTF_RenderUTF8_Blended, and TTF_RenderUTF8_LCD.
- *
- * \param font the font to render with.
- * \param text text to render, in UTF-8 encoding.
- * \param fg the foreground color for the text.
- * \returns a new 8-bit, palettized surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_RenderUNICODE_Shaded
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderUTF8_Shaded(TTF_Font *font,
- const char *text, SDL_Color fg, SDL_Color bg);
- /**
- * Render UCS-2 text at high quality to a new 8-bit surface.
- *
- * This function will allocate a new 8-bit, palettized surface. The surface's
- * 0 pixel will be the specified background color, while other pixels have
- * varying degrees of the foreground color. This function returns the new
- * surface, or NULL if there was an error.
- *
- * This will not word-wrap the string; you'll get a surface with a single line
- * of text, as long as the string requires. You can use
- * TTF_RenderUNICODE_Shaded_Wrapped() instead if you need to wrap the output
- * to multiple lines.
- *
- * This will not wrap on newline characters.
- *
- * Please note that this function is named "Unicode" but currently expects
- * UCS-2 encoding (16 bits per codepoint). This does not give you access to
- * large Unicode values, such as emoji glyphs. These codepoints are accessible
- * through the UTF-8 version of this function.
- *
- * You can render at other quality levels with TTF_RenderUNICODE_Solid,
- * TTF_RenderUNICODE_Blended, and TTF_RenderUNICODE_LCD.
- *
- * \param font the font to render with.
- * \param text text to render, in UCS-2 encoding.
- * \param fg the foreground color for the text.
- * \returns a new 8-bit, palettized surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_RenderUTF8_Shaded
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderUNICODE_Shaded(TTF_Font *font,
- const Uint16 *text, SDL_Color fg, SDL_Color bg);
- /**
- * Render word-wrapped Latin1 text at high quality to a new 8-bit surface.
- *
- * This function will allocate a new 8-bit, palettized surface. The surface's
- * 0 pixel will be the specified background color, while other pixels have
- * varying degrees of the foreground color. This function returns the new
- * surface, or NULL if there was an error.
- *
- * Text is wrapped to multiple lines on line endings and on word boundaries if
- * it extends beyond `wrapLength` in pixels.
- *
- * If wrapLength is 0, this function will only wrap on newline characters.
- *
- * You almost certainly want TTF_RenderUTF8_Shaded_Wrapped() unless you're
- * sure you have a 1-byte Latin1 encoding. US ASCII characters will work with
- * either function, but most other Unicode characters packed into a `const
- * char *` will need UTF-8.
- *
- * You can render at other quality levels with TTF_RenderText_Solid_Wrapped,
- * TTF_RenderText_Blended_Wrapped, and TTF_RenderText_LCD_Wrapped.
- *
- * \param font the font to render with.
- * \param text text to render, in Latin1 encoding.
- * \param fg the foreground color for the text.
- * \returns a new 8-bit, palettized surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- *
- * \sa TTF_RenderUTF8_Shaded_Wrapped
- * \sa TTF_RenderUNICODE_Shaded_Wrapped
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderText_Shaded_Wrapped(TTF_Font *font,
- const char *text, SDL_Color fg, SDL_Color bg, Uint32 wrapLength);
- /**
- * Render word-wrapped UTF-8 text at high quality to a new 8-bit surface.
- *
- * This function will allocate a new 8-bit, palettized surface. The surface's
- * 0 pixel will be the specified background color, while other pixels have
- * varying degrees of the foreground color. This function returns the new
- * surface, or NULL if there was an error.
- *
- * Text is wrapped to multiple lines on line endings and on word boundaries if
- * it extends beyond `wrapLength` in pixels.
- *
- * If wrapLength is 0, this function will only wrap on newline characters.
- *
- * You can render at other quality levels with TTF_RenderUTF8_Solid_Wrapped,
- * TTF_RenderUTF8_Blended_Wrapped, and TTF_RenderUTF8_LCD_Wrapped.
- *
- * \param font the font to render with.
- * \param text text to render, in UTF-8 encoding.
- * \param fg the foreground color for the text.
- * \returns a new 8-bit, palettized surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- *
- * \sa TTF_RenderUTF8_Solid_Wrapped
- * \sa TTF_RenderUTF8_Blended_Wrapped
- * \sa TTF_RenderUTF8_LCD_Wrapped
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderUTF8_Shaded_Wrapped(TTF_Font *font,
- const char *text, SDL_Color fg, SDL_Color bg, Uint32 wrapLength);
- /**
- * Render word-wrapped UCS-2 text at high quality to a new 8-bit surface.
- *
- * This function will allocate a new 8-bit, palettized surface. The surface's
- * 0 pixel will be the specified background color, while other pixels have
- * varying degrees of the foreground color. This function returns the new
- * surface, or NULL if there was an error.
- *
- * Text is wrapped to multiple lines on line endings and on word boundaries if
- * it extends beyond `wrapLength` in pixels.
- *
- * If wrapLength is 0, this function will only wrap on newline characters.
- *
- * Please note that this function is named "Unicode" but currently expects
- * UCS-2 encoding (16 bits per codepoint). This does not give you access to
- * large Unicode values, such as emoji glyphs. These codepoints are accessible
- * through the UTF-8 version of this function.
- *
- * You can render at other quality levels with
- * TTF_RenderUNICODE_Solid_Wrapped, TTF_RenderUNICODE_Blended_Wrapped, and
- * TTF_RenderUNICODE_LCD_Wrapped.
- *
- * \param font the font to render with.
- * \param text text to render, in UCS-2 encoding.
- * \param fg the foreground color for the text.
- * \returns a new 8-bit, palettized surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- *
- * \sa TTF_RenderUTF8_Shaded_Wrapped
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderUNICODE_Shaded_Wrapped(TTF_Font *font,
- const Uint16 *text, SDL_Color fg, SDL_Color bg, Uint32 wrapLength);
- /**
- * Render a single 16-bit glyph at high quality to a new 8-bit surface.
- *
- * This function will allocate a new 8-bit, palettized surface. The surface's
- * 0 pixel will be the specified background color, while other pixels have
- * varying degrees of the foreground color. This function returns the new
- * surface, or NULL if there was an error.
- *
- * The glyph is rendered without any padding or centering in the X direction,
- * and aligned normally in the Y direction.
- *
- * Note that this version of the function takes a 16-bit character code, which
- * covers the Basic Multilingual Plane, but is insufficient to cover the
- * entire set of possible Unicode values, including emoji glyphs. You should
- * use TTF_RenderGlyph32_Shaded() instead, which offers the same functionality
- * but takes a 32-bit codepoint instead.
- *
- * The only reason to use this function is that it was available since the
- * beginning of time, more or less.
- *
- * You can render at other quality levels with TTF_RenderGlyph_Solid,
- * TTF_RenderGlyph_Blended, and TTF_RenderGlyph_LCD.
- *
- * \param font the font to render with.
- * \param ch the character to render.
- * \param fg the foreground color for the text.
- * \returns a new 8-bit, palettized surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_RenderGlyph32_Shaded
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderGlyph_Shaded(TTF_Font *font,
- Uint16 ch, SDL_Color fg, SDL_Color bg);
- /**
- * Render a single 32-bit glyph at high quality to a new 8-bit surface.
- *
- * This function will allocate a new 8-bit, palettized surface. The surface's
- * 0 pixel will be the specified background color, while other pixels have
- * varying degrees of the foreground color. This function returns the new
- * surface, or NULL if there was an error.
- *
- * The glyph is rendered without any padding or centering in the X direction,
- * and aligned normally in the Y direction.
- *
- * This is the same as TTF_RenderGlyph_Shaded(), but takes a 32-bit character
- * instead of 16-bit, and thus can render a larger range. If you are sure
- * you'll have an SDL_ttf that's version 2.0.18 or newer, there's no reason
- * not to use this function exclusively.
- *
- * You can render at other quality levels with TTF_RenderGlyph32_Solid,
- * TTF_RenderGlyph32_Blended, and TTF_RenderGlyph32_LCD.
- *
- * \param font the font to render with.
- * \param ch the character to render.
- * \param fg the foreground color for the text.
- * \returns a new 8-bit, palettized surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- *
- * \sa TTF_RenderGlyph32_Solid
- * \sa TTF_RenderGlyph32_Blended
- * \sa TTF_RenderGlyph32_LCD
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderGlyph32_Shaded(TTF_Font *font,
- Uint32 ch, SDL_Color fg, SDL_Color bg);
- /**
- * Render Latin1 text at high quality to a new ARGB surface.
- *
- * This function will allocate a new 32-bit, ARGB surface, using alpha
- * blending to dither the font with the given color. This function returns the
- * new surface, or NULL if there was an error.
- *
- * This will not word-wrap the string; you'll get a surface with a single line
- * of text, as long as the string requires. You can use
- * TTF_RenderText_Blended_Wrapped() instead if you need to wrap the output to
- * multiple lines.
- *
- * This will not wrap on newline characters.
- *
- * You almost certainly want TTF_RenderUTF8_Blended() unless you're sure you
- * have a 1-byte Latin1 encoding. US ASCII characters will work with either
- * function, but most other Unicode characters packed into a `const char *`
- * will need UTF-8.
- *
- * You can render at other quality levels with TTF_RenderText_Solid,
- * TTF_RenderText_Blended, and TTF_RenderText_LCD.
- *
- * \param font the font to render with.
- * \param text text to render, in Latin1 encoding.
- * \param fg the foreground color for the text.
- * \returns a new 32-bit, ARGB surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_RenderUTF8_Shaded
- * \sa TTF_RenderUNICODE_Shaded
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderText_Blended(TTF_Font *font,
- const char *text, SDL_Color fg);
- /**
- * Render UTF-8 text at high quality to a new ARGB surface.
- *
- * This function will allocate a new 32-bit, ARGB surface, using alpha
- * blending to dither the font with the given color. This function returns the
- * new surface, or NULL if there was an error.
- *
- * This will not word-wrap the string; you'll get a surface with a single line
- * of text, as long as the string requires. You can use
- * TTF_RenderUTF8_Blended_Wrapped() instead if you need to wrap the output to
- * multiple lines.
- *
- * This will not wrap on newline characters.
- *
- * You can render at other quality levels with TTF_RenderUTF8_Solid,
- * TTF_RenderUTF8_Shaded, and TTF_RenderUTF8_LCD.
- *
- * \param font the font to render with.
- * \param text text to render, in UTF-8 encoding.
- * \param fg the foreground color for the text.
- * \returns a new 32-bit, ARGB surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_RenderUNICODE_Blended
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderUTF8_Blended(TTF_Font *font,
- const char *text, SDL_Color fg);
- /**
- * Render UCS-2 text at high quality to a new ARGB surface.
- *
- * This function will allocate a new 32-bit, ARGB surface, using alpha
- * blending to dither the font with the given color. This function returns the
- * new surface, or NULL if there was an error.
- *
- * This will not word-wrap the string; you'll get a surface with a single line
- * of text, as long as the string requires. You can use
- * TTF_RenderUNICODE_Blended_Wrapped() instead if you need to wrap the output
- * to multiple lines.
- *
- * This will not wrap on newline characters.
- *
- * Please note that this function is named "Unicode" but currently expects
- * UCS-2 encoding (16 bits per codepoint). This does not give you access to
- * large Unicode values, such as emoji glyphs. These codepoints are accessible
- * through the UTF-8 version of this function.
- *
- * You can render at other quality levels with TTF_RenderUNICODE_Solid,
- * TTF_RenderUNICODE_Shaded, and TTF_RenderUNICODE_LCD.
- *
- * \param font the font to render with.
- * \param text text to render, in UCS-2 encoding.
- * \param fg the foreground color for the text.
- * \returns a new 32-bit, ARGB surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_RenderUTF8_Blended
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderUNICODE_Blended(TTF_Font *font,
- const Uint16 *text, SDL_Color fg);
- /**
- * Render word-wrapped Latin1 text at high quality to a new ARGB surface.
- *
- * This function will allocate a new 32-bit, ARGB surface, using alpha
- * blending to dither the font with the given color. This function returns the
- * new surface, or NULL if there was an error.
- *
- * Text is wrapped to multiple lines on line endings and on word boundaries if
- * it extends beyond `wrapLength` in pixels.
- *
- * If wrapLength is 0, this function will only wrap on newline characters.
- *
- * You almost certainly want TTF_RenderUTF8_Blended_Wrapped() unless you're
- * sure you have a 1-byte Latin1 encoding. US ASCII characters will work with
- * either function, but most other Unicode characters packed into a `const
- * char *` will need UTF-8.
- *
- * You can render at other quality levels with TTF_RenderText_Solid_Wrapped,
- * TTF_RenderText_Shaded_Wrapped, and TTF_RenderText_LCD_Wrapped.
- *
- * \param font the font to render with.
- * \param text text to render, in Latin1 encoding.
- * \param fg the foreground color for the text.
- * \returns a new 32-bit, ARGB surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- *
- * \sa TTF_RenderUTF8_Blended_Wrapped
- * \sa TTF_RenderUNICODE_Blended_Wrapped
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderText_Blended_Wrapped(TTF_Font *font,
- const char *text, SDL_Color fg, Uint32 wrapLength);
- /**
- * Render word-wrapped UTF-8 text at high quality to a new ARGB surface.
- *
- * This function will allocate a new 32-bit, ARGB surface, using alpha
- * blending to dither the font with the given color. This function returns the
- * new surface, or NULL if there was an error.
- *
- * Text is wrapped to multiple lines on line endings and on word boundaries if
- * it extends beyond `wrapLength` in pixels.
- *
- * If wrapLength is 0, this function will only wrap on newline characters.
- *
- * You can render at other quality levels with TTF_RenderUTF8_Solid_Wrapped,
- * TTF_RenderUTF8_Shaded_Wrapped, and TTF_RenderUTF8_LCD_Wrapped.
- *
- * \param font the font to render with.
- * \param text text to render, in UTF-8 encoding.
- * \param fg the foreground color for the text.
- * \returns a new 32-bit, ARGB surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- *
- * \sa TTF_RenderUTF8_Solid_Wrapped
- * \sa TTF_RenderUTF8_Shaded_Wrapped
- * \sa TTF_RenderUTF8_LCD_Wrapped
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderUTF8_Blended_Wrapped(TTF_Font *font,
- const char *text, SDL_Color fg, Uint32 wrapLength);
- /**
- * Render word-wrapped UCS-2 text at high quality to a new ARGB surface.
- *
- * This function will allocate a new 32-bit, ARGB surface, using alpha
- * blending to dither the font with the given color. This function returns the
- * new surface, or NULL if there was an error.
- *
- * Text is wrapped to multiple lines on line endings and on word boundaries if
- * it extends beyond `wrapLength` in pixels.
- *
- * If wrapLength is 0, this function will only wrap on newline characters.
- *
- * Please note that this function is named "Unicode" but currently expects
- * UCS-2 encoding (16 bits per codepoint). This does not give you access to
- * large Unicode values, such as emoji glyphs. These codepoints are accessible
- * through the UTF-8 version of this function.
- *
- * You can render at other quality levels with
- * TTF_RenderUNICODE_Solid_Wrapped, TTF_RenderUNICODE_Shaded_Wrapped, and
- * TTF_RenderUNICODE_LCD_Wrapped.
- *
- * \param font the font to render with.
- * \param text text to render, in UCS-2 encoding.
- * \param fg the foreground color for the text.
- * \returns a new 32-bit, ARGB surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- *
- * \sa TTF_RenderUTF8_Blended_Wrapped
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderUNICODE_Blended_Wrapped(TTF_Font *font,
- const Uint16 *text, SDL_Color fg, Uint32 wrapLength);
- /**
- * Render a single 16-bit glyph at high quality to a new ARGB surface.
- *
- * This function will allocate a new 32-bit, ARGB surface, using alpha
- * blending to dither the font with the given color. This function returns the
- * new surface, or NULL if there was an error.
- *
- * The glyph is rendered without any padding or centering in the X direction,
- * and aligned normally in the Y direction.
- *
- * Note that this version of the function takes a 16-bit character code, which
- * covers the Basic Multilingual Plane, but is insufficient to cover the
- * entire set of possible Unicode values, including emoji glyphs. You should
- * use TTF_RenderGlyph32_Blended() instead, which offers the same
- * functionality but takes a 32-bit codepoint instead.
- *
- * The only reason to use this function is that it was available since the
- * beginning of time, more or less.
- *
- * You can render at other quality levels with TTF_RenderGlyph_Solid,
- * TTF_RenderGlyph_Shaded, and TTF_RenderGlyph_LCD.
- *
- * \param font the font to render with.
- * \param ch the character to render.
- * \param fg the foreground color for the text.
- * \returns a new 32-bit, ARGB surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_RenderGlyph32_Blended
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderGlyph_Blended(TTF_Font *font,
- Uint16 ch, SDL_Color fg);
- /**
- * Render a single 32-bit glyph at high quality to a new ARGB surface.
- *
- * This function will allocate a new 32-bit, ARGB surface, using alpha
- * blending to dither the font with the given color. This function returns the
- * new surface, or NULL if there was an error.
- *
- * The glyph is rendered without any padding or centering in the X direction,
- * and aligned normally in the Y direction.
- *
- * This is the same as TTF_RenderGlyph_Blended(), but takes a 32-bit character
- * instead of 16-bit, and thus can render a larger range. If you are sure
- * you'll have an SDL_ttf that's version 2.0.18 or newer, there's no reason
- * not to use this function exclusively.
- *
- * You can render at other quality levels with TTF_RenderGlyph32_Solid,
- * TTF_RenderGlyph32_Shaded, and TTF_RenderGlyph32_LCD.
- *
- * \param font the font to render with.
- * \param ch the character to render.
- * \param fg the foreground color for the text.
- * \returns a new 32-bit, ARGB surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- *
- * \sa TTF_RenderGlyph32_Solid
- * \sa TTF_RenderGlyph32_Shaded
- * \sa TTF_RenderGlyph32_LCD
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderGlyph32_Blended(TTF_Font *font,
- Uint32 ch, SDL_Color fg);
- /**
- * Render Latin1 text at LCD subpixel quality to a new ARGB surface.
- *
- * This function will allocate a new 32-bit, ARGB surface, and render
- * alpha-blended text using FreeType's LCD subpixel rendering. This function
- * returns the new surface, or NULL if there was an error.
- *
- * This will not word-wrap the string; you'll get a surface with a single line
- * of text, as long as the string requires. You can use
- * TTF_RenderText_LCD_Wrapped() instead if you need to wrap the output to
- * multiple lines.
- *
- * This will not wrap on newline characters.
- *
- * You almost certainly want TTF_RenderUTF8_LCD() unless you're sure you have
- * a 1-byte Latin1 encoding. US ASCII characters will work with either
- * function, but most other Unicode characters packed into a `const char *`
- * will need UTF-8.
- *
- * You can render at other quality levels with TTF_RenderText_Solid,
- * TTF_RenderText_Shaded, and TTF_RenderText_Blended.
- *
- * \param font the font to render with.
- * \param text text to render, in Latin1 encoding.
- * \param fg the foreground color for the text.
- * \param bg the background color for the text.
- * \returns a new 32-bit, ARGB surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.20.0.
- *
- * \sa TTF_RenderUTF8_LCD
- * \sa TTF_RenderUNICODE_LCD
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderText_LCD(TTF_Font *font,
- const char *text, SDL_Color fg, SDL_Color bg);
- /**
- * Render UTF-8 text at LCD subpixel quality to a new ARGB surface.
- *
- * This function will allocate a new 32-bit, ARGB surface, and render
- * alpha-blended text using FreeType's LCD subpixel rendering. This function
- * returns the new surface, or NULL if there was an error.
- *
- * This will not word-wrap the string; you'll get a surface with a single line
- * of text, as long as the string requires. You can use
- * TTF_RenderUTF8_LCD_Wrapped() instead if you need to wrap the output to
- * multiple lines.
- *
- * This will not wrap on newline characters.
- *
- * You can render at other quality levels with TTF_RenderUTF8_Solid,
- * TTF_RenderUTF8_Shaded, and TTF_RenderUTF8_Blended.
- *
- * \param font the font to render with.
- * \param text text to render, in UTF-8 encoding.
- * \param fg the foreground color for the text.
- * \param bg the background color for the text.
- * \returns a new 32-bit, ARGB surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.20.0.
- *
- * \sa TTF_RenderUNICODE_LCD
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderUTF8_LCD(TTF_Font *font,
- const char *text, SDL_Color fg, SDL_Color bg);
- /**
- * Render UCS-2 text at LCD subpixel quality to a new ARGB surface.
- *
- * This function will allocate a new 32-bit, ARGB surface, and render
- * alpha-blended text using FreeType's LCD subpixel rendering. This function
- * returns the new surface, or NULL if there was an error.
- *
- * This will not word-wrap the string; you'll get a surface with a single line
- * of text, as long as the string requires. You can use
- * TTF_RenderUNICODE_LCD_Wrapped() instead if you need to wrap the output to
- * multiple lines.
- *
- * This will not wrap on newline characters.
- *
- * Please note that this function is named "Unicode" but currently expects
- * UCS-2 encoding (16 bits per codepoint). This does not give you access to
- * large Unicode values, such as emoji glyphs. These codepoints are accessible
- * through the UTF-8 version of this function.
- *
- * You can render at other quality levels with TTF_RenderUNICODE_Solid,
- * TTF_RenderUNICODE_Shaded, and TTF_RenderUNICODE_Blended.
- *
- * \param font the font to render with.
- * \param text text to render, in UCS-2 encoding.
- * \param fg the foreground color for the text.
- * \param bg the background color for the text.
- * \returns a new 32-bit, ARGB surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.20.0.
- *
- * \sa TTF_RenderUTF8_LCD
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderUNICODE_LCD(TTF_Font *font,
- const Uint16 *text, SDL_Color fg, SDL_Color bg);
- /**
- * Render word-wrapped Latin1 text at LCD subpixel quality to a new ARGB
- * surface.
- *
- * This function will allocate a new 32-bit, ARGB surface, and render
- * alpha-blended text using FreeType's LCD subpixel rendering. This function
- * returns the new surface, or NULL if there was an error.
- *
- * Text is wrapped to multiple lines on line endings and on word boundaries if
- * it extends beyond `wrapLength` in pixels.
- *
- * If wrapLength is 0, this function will only wrap on newline characters.
- *
- * You almost certainly want TTF_RenderUTF8_LCD_Wrapped() unless you're sure
- * you have a 1-byte Latin1 encoding. US ASCII characters will work with
- * either function, but most other Unicode characters packed into a `const
- * char *` will need UTF-8.
- *
- * You can render at other quality levels with TTF_RenderText_Solid_Wrapped,
- * TTF_RenderText_Shaded_Wrapped, and TTF_RenderText_Blended_Wrapped.
- *
- * \param font the font to render with.
- * \param text text to render, in Latin1 encoding.
- * \param fg the foreground color for the text.
- * \param bg the background color for the text.
- * \returns a new 32-bit, ARGB surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.20.0.
- *
- * \sa TTF_RenderUTF8_LCD_Wrapped
- * \sa TTF_RenderUNICODE_LCD_Wrapped
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderText_LCD_Wrapped(TTF_Font *font,
- const char *text, SDL_Color fg, SDL_Color bg, Uint32 wrapLength);
- /**
- * Render word-wrapped UTF-8 text at LCD subpixel quality to a new ARGB
- * surface.
- *
- * This function will allocate a new 32-bit, ARGB surface, and render
- * alpha-blended text using FreeType's LCD subpixel rendering. This function
- * returns the new surface, or NULL if there was an error.
- *
- * Text is wrapped to multiple lines on line endings and on word boundaries if
- * it extends beyond `wrapLength` in pixels.
- *
- * If wrapLength is 0, this function will only wrap on newline characters.
- *
- * You can render at other quality levels with TTF_RenderUTF8_Solid_Wrapped,
- * TTF_RenderUTF8_Shaded_Wrapped, and TTF_RenderUTF8_Blended_Wrapped.
- *
- * \param font the font to render with.
- * \param text text to render, in UTF-8 encoding.
- * \param fg the foreground color for the text.
- * \param bg the background color for the text.
- * \returns a new 32-bit, ARGB surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.20.0.
- *
- * \sa TTF_RenderUTF8_Solid_Wrapped
- * \sa TTF_RenderUTF8_Shaded_Wrapped
- * \sa TTF_RenderUTF8_Blended_Wrapped
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderUTF8_LCD_Wrapped(TTF_Font *font,
- const char *text, SDL_Color fg, SDL_Color bg, Uint32 wrapLength);
- /**
- * Render word-wrapped UCS-2 text at LCD subpixel quality to a new ARGB
- * surface.
- *
- * This function will allocate a new 32-bit, ARGB surface, and render
- * alpha-blended text using FreeType's LCD subpixel rendering. This function
- * returns the new surface, or NULL if there was an error.
- *
- * Text is wrapped to multiple lines on line endings and on word boundaries if
- * it extends beyond `wrapLength` in pixels.
- *
- * If wrapLength is 0, this function will only wrap on newline characters.
- *
- * Please note that this function is named "Unicode" but currently expects
- * UCS-2 encoding (16 bits per codepoint). This does not give you access to
- * large Unicode values, such as emoji glyphs. These codepoints are accessible
- * through the UTF-8 version of this function.
- *
- * You can render at other quality levels with
- * TTF_RenderUNICODE_Solid_Wrapped, TTF_RenderUNICODE_Shaded_Wrapped, and
- * TTF_RenderUNICODE_Blended_Wrapped.
- *
- * \param font the font to render with.
- * \param text text to render, in UCS-2 encoding.
- * \param fg the foreground color for the text.
- * \param bg the background color for the text.
- * \returns a new 32-bit, ARGB surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.20.0.
- *
- * \sa TTF_RenderUTF8_LCD_Wrapped
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderUNICODE_LCD_Wrapped(TTF_Font *font,
- const Uint16 *text, SDL_Color fg, SDL_Color bg, Uint32 wrapLength);
- /**
- * Render a single 16-bit glyph at LCD subpixel quality to a new ARGB surface.
- *
- * This function will allocate a new 32-bit, ARGB surface, and render
- * alpha-blended text using FreeType's LCD subpixel rendering. This function
- * returns the new surface, or NULL if there was an error.
- *
- * The glyph is rendered without any padding or centering in the X direction,
- * and aligned normally in the Y direction.
- *
- * Note that this version of the function takes a 16-bit character code, which
- * covers the Basic Multilingual Plane, but is insufficient to cover the
- * entire set of possible Unicode values, including emoji glyphs. You should
- * use TTF_RenderGlyph32_LCD() instead, which offers the same functionality
- * but takes a 32-bit codepoint instead.
- *
- * This function only exists for consistency with the existing API at the time
- * of its addition.
- *
- * You can render at other quality levels with TTF_RenderGlyph_Solid,
- * TTF_RenderGlyph_Shaded, and TTF_RenderGlyph_Blended.
- *
- * \param font the font to render with.
- * \param ch the character to render.
- * \param fg the foreground color for the text.
- * \param bg the background color for the text.
- * \returns a new 32-bit, ARGB surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.20.0.
- *
- * \sa TTF_RenderGlyph32_LCD
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderGlyph_LCD(TTF_Font *font,
- Uint16 ch, SDL_Color fg, SDL_Color bg);
- /**
- * Render a single 32-bit glyph at LCD subpixel quality to a new ARGB surface.
- *
- * This function will allocate a new 32-bit, ARGB surface, and render
- * alpha-blended text using FreeType's LCD subpixel rendering. This function
- * returns the new surface, or NULL if there was an error.
- *
- * The glyph is rendered without any padding or centering in the X direction,
- * and aligned normally in the Y direction.
- *
- * This is the same as TTF_RenderGlyph_LCD(), but takes a 32-bit character
- * instead of 16-bit, and thus can render a larger range. Between the two, you
- * should always use this function.
- *
- * You can render at other quality levels with TTF_RenderGlyph32_Solid,
- * TTF_RenderGlyph32_Shaded, and TTF_RenderGlyph32_Blended.
- *
- * \param font the font to render with.
- * \param ch the character to render.
- * \param fg the foreground color for the text.
- * \param bg the background color for the text.
- * \returns a new 32-bit, ARGB surface, or NULL if there was an error.
- *
- * \since This function is available since SDL_ttf 2.20.0.
- *
- * \sa TTF_RenderGlyph32_Solid
- * \sa TTF_RenderGlyph32_Shaded
- * \sa TTF_RenderGlyph32_Blended
- */
- extern DECLSPEC SDL_Surface * SDLCALL TTF_RenderGlyph32_LCD(TTF_Font *font,
- Uint32 ch, SDL_Color fg, SDL_Color bg);
- /* For compatibility with previous versions, here are the old functions */
- #define TTF_RenderText(font, text, fg, bg) \
- TTF_RenderText_Shaded(font, text, fg, bg)
- #define TTF_RenderUTF8(font, text, fg, bg) \
- TTF_RenderUTF8_Shaded(font, text, fg, bg)
- #define TTF_RenderUNICODE(font, text, fg, bg) \
- TTF_RenderUNICODE_Shaded(font, text, fg, bg)
- /**
- * Dispose of a previously-created font.
- *
- * Call this when done with a font. This function will free any resources
- * associated with it.
- *
- * The font is not valid after being passed to this function. String pointers
- * from functions that return information on this font, such as
- * TTF_FontFaceFamilyName() and TTF_FontFaceStyleName(), are no longer valid
- * after this call, as well.
- *
- * \param font the font to dispose of.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_OpenFontIndexDPIRW
- * \sa TTF_OpenFontRW
- * \sa TTF_OpenFontDPI
- * \sa TTF_OpenFontDPIRW
- * \sa TTF_OpenFontIndex
- * \sa TTF_OpenFontIndexDPI
- * \sa TTF_OpenFontIndexDPIRW
- * \sa TTF_OpenFontIndexRW
- */
- extern DECLSPEC void SDLCALL TTF_CloseFont(TTF_Font *font);
- /**
- * Deinitialize SDL_ttf.
- *
- * You must call this when done with the library, to free internal resources.
- * It is safe to call this when the library isn't initialized, as it will just
- * return immediately.
- *
- * Once you have as many quit calls as you have had successful calls to
- * TTF_Init, the library will actually deinitialize.
- *
- * Please note that this does not automatically close any fonts that are still
- * open at the time of deinitialization, and it is possibly not safe to close
- * them afterwards, as parts of the library will no longer be initialized to
- * deal with it. A well-written program should call TTF_CloseFont() on any
- * open fonts before calling this function!
- *
- * \since This function is available since SDL_ttf 2.0.12.
- */
- extern DECLSPEC void SDLCALL TTF_Quit(void);
- /**
- * Check if SDL_ttf is initialized.
- *
- * This reports the number of times the library has been initialized by a call
- * to TTF_Init(), without a paired deinitialization request from TTF_Quit().
- *
- * In short: if it's greater than zero, the library is currently initialized
- * and ready to work. If zero, it is not initialized.
- *
- * Despite the return value being a signed integer, this function should not
- * return a negative number.
- *
- * \returns the current number of initialization calls, that need to
- * eventually be paired with this many calls to TTF_Quit().
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_Init
- * \sa TTF_Quit
- */
- extern DECLSPEC int SDLCALL TTF_WasInit(void);
- /**
- * Query the kerning size of two glyphs indices.
- *
- * \deprecated This function accidentally requires FreeType font indexes,
- * not codepoints, which we don't expose through this API, so
- * it could give wildly incorrect results, especially with
- * non-ASCII values. Going forward, please use
- * TTF_GetFontKerningSizeGlyphs() instead, which does what you
- * probably expected this function to do.
- *
- * \param font the font to query.
- * \param prev_index the font index, NOT codepoint, of the previous character.
- * \param index the font index, NOT codepoint, of the current character.
- * \returns The kerning size between the two specified characters, in pixels, or -1 on error.
- *
- * \since This function is available since SDL_ttf 2.0.12.
- *
- * \sa TTF_GetFontKerningSizeGlyphs
- */
- extern SDL_DEPRECATED DECLSPEC int TTF_GetFontKerningSize(TTF_Font *font, int prev_index, int index);
- /**
- * Query the kerning size of two 16-bit glyphs.
- *
- * Note that this version of the function takes 16-bit character
- * codes, which covers the Basic Multilingual Plane, but is insufficient
- * to cover the entire set of possible Unicode values, including emoji
- * glyphs. You should use TTF_GetFontKerningSizeGlyphs32() instead, which
- * offers the same functionality but takes a 32-bit codepoints instead.
- *
- * The only reason to use this function is that it was available since
- * the beginning of time, more or less.
- *
- * \param font the font to query.
- * \param previous_ch the previous character's code, 16 bits.
- * \param ch the current character's code, 16 bits.
- * \returns The kerning size between the two specified characters, in pixels, or -1 on error.
- *
- * \since This function is available since SDL_ttf 2.0.14.
- *
- * \sa TTF_GetFontKerningSizeGlyphs32
- */
- extern DECLSPEC int TTF_GetFontKerningSizeGlyphs(TTF_Font *font, Uint16 previous_ch, Uint16 ch);
- /**
- * Query the kerning size of two 32-bit glyphs.
- *
- * This is the same as TTF_GetFontKerningSizeGlyphs(), but takes 32-bit
- * characters instead of 16-bit, and thus can manage a larger range. If
- * you are sure you'll have an SDL_ttf that's version 2.0.18 or newer,
- * there's no reason not to use this function exclusively.
- *
- * \param font the font to query.
- * \param previous_ch the previous character's code, 32 bits.
- * \param ch the current character's code, 32 bits.
- * \returns The kerning size between the two specified characters, in pixels, or -1 on error.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- */
- extern DECLSPEC int TTF_GetFontKerningSizeGlyphs32(TTF_Font *font, Uint32 previous_ch, Uint32 ch);
- /**
- * Enable Signed Distance Field rendering for a font.
- *
- * This works with the Blended APIs. SDF is a technique that
- * helps fonts look sharp even when scaling and rotating.
- *
- * This clears already-generated glyphs, if any, from the cache.
- *
- * \param font the font to set SDF support on.
- * \param on_off SDL_TRUE to enable SDF, SDL_FALSE to disable.
- *
- * \returns 0 on success, -1 on error.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- *
- * \sa TTF_GetFontSDF
- */
- extern DECLSPEC int TTF_SetFontSDF(TTF_Font *font, SDL_bool on_off);
- /**
- * Query whether Signed Distance Field rendering is enabled for a font.
- *
- * \param font the font to query
- *
- * \returns SDL_TRUE if enabled, SDL_FALSE otherwise.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- *
- * \sa TTF_SetFontSDF
- */
- extern DECLSPEC SDL_bool TTF_GetFontSDF(const TTF_Font *font);
- /**
- * Report SDL_ttf errors
- *
- * \sa TTF_GetError
- */
- #define TTF_SetError SDL_SetError
- /**
- * Get last SDL_ttf error
- *
- * \sa TTF_SetError
- */
- #define TTF_GetError SDL_GetError
- /**
- * Direction flags
- *
- * \sa TTF_SetFontDirection
- */
- typedef enum
- {
- TTF_DIRECTION_LTR = 0, /* Left to Right */
- TTF_DIRECTION_RTL, /* Right to Left */
- TTF_DIRECTION_TTB, /* Top to Bottom */
- TTF_DIRECTION_BTT /* Bottom to Top */
- } TTF_Direction;
- /**
- * Set a global direction to be used for text shaping.
- *
- * \deprecated This function expects an hb_direction_t value, from HarfBuzz,
- * cast to an int, and affects all fonts globally. Please use
- * TTF_SetFontDirection() instead, which uses an enum supplied by
- * SDL_ttf itself and operates on a per-font basis.
- *
- * This is a global setting; fonts will favor a value set with
- * TTF_SetFontDirection(), but if they have not had one explicitly
- * set, they will use the value specified here.
- *
- * The default value is `HB_DIRECTION_LTR` (left-to-right text
- * flow).
- *
- * \param direction an hb_direction_t value.
- * \returns 0, or -1 if SDL_ttf is not compiled with HarfBuzz support.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- *
- * \sa TTF_SetFontDirection
- */
- extern SDL_DEPRECATED DECLSPEC int SDLCALL TTF_SetDirection(int direction); /* hb_direction_t */
- /**
- * Set a global script to be used for text shaping.
- *
- * \deprecated This function expects an hb_script_t value, from HarfBuzz, cast
- * to an int, and affects all fonts globally. Please use
- * TTF_SetFontScriptName() instead, which accepts a string that is
- * converted to an equivalent int internally, and operates on a
- * per-font basis.
- *
- * This is a global setting; fonts will favor a value set with
- * TTF_SetFontScriptName(), but if they have not had one
- * explicitly set, they will use the value specified here.
- *
- * The default value is `HB_SCRIPT_UNKNOWN`.
- *
- * \returns 0, or -1 if SDL_ttf is not compiled with HarfBuzz support.
- *
- * \since This function is available since SDL_ttf 2.0.18.
- *
- * \sa TTF_SetFontScriptName
- */
- extern SDL_DEPRECATED DECLSPEC int SDLCALL TTF_SetScript(int script); /* hb_script_t */
- /**
- * Set direction to be used for text shaping by a font.
- *
- * Any value supplied here will override the global direction set with the
- * deprecated TTF_SetDirection().
- *
- * Possible direction values are:
- *
- * - `TTF_DIRECTION_LTR` (Left to Right)
- * - `TTF_DIRECTION_RTL` (Right to Left)
- * - `TTF_DIRECTION_TTB` (Top to Bottom)
- * - `TTF_DIRECTION_BTT` (Bottom to Top)
- *
- * If SDL_ttf was not built with HarfBuzz support, this function returns -1.
- *
- * \param font the font to specify a direction for.
- * \param direction the new direction for text to flow.
- * \returns 0 on success, or -1 on error.
- *
- * \since This function is available since SDL_ttf 2.20.0.
- */
- extern DECLSPEC int SDLCALL TTF_SetFontDirection(TTF_Font *font, TTF_Direction direction);
- /**
- * Set script to be used for text shaping by a font.
- *
- * Any value supplied here will override the global script set with the
- * deprecated TTF_SetScript().
- *
- * The supplied script value must be a null-terminated string of exactly four
- * characters.
- *
- * If SDL_ttf was not built with HarfBuzz support, this function returns -1.
- *
- * \param font the font to specify a direction for.
- * \param script null-terminated string of exactly 4 characters.
- * \returns 0 on success, or -1 on error.
- *
- * \since This function is available since SDL_ttf 2.20.0.
- */
- extern DECLSPEC int SDLCALL TTF_SetFontScriptName(TTF_Font *font, const char *script);
- /* Ends C function definitions when using C++ */
- #ifdef __cplusplus
- }
- #endif
- #include "close_code.h"
- #endif /* SDL_TTF_H_ */
- /* vi: set ts=4 sw=4 expandtab: */
|