/* Ċ Ġ* ĠCopyright ĠL WJ GL . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠLicense Ġterms : Ġhttps :// www . lwjgl . org / license Ċ Ġ*/ Ċ package Ġorg . lwjgl . st b . templates Ċ Ċ import Ġorg . lwjgl . generator .* Ċ import Ġorg . lwjgl . st b .* Ċ Ċ val Ġst b _ image Ġ= Ġ" ST B Image ". native Class ( packageName Ġ= ĠST B _ PACKAGE , Ġprefix Ġ= Ġ" ST BI _", Ġlibrary Ġ= ĠST B _ LIBRARY ) Ġ{ ĊĠĠĠ Ġinclude ST B API ( ĊĠĠĠĠĠĠĠ Ġ""" # include Ġ" lwjgl _ malloc . h " Ċ # define ĠST BI _ M ALLOC ( sz ) ĠĠĠ Ġorg _ lwjgl _ malloc ( sz ) Ċ # define ĠST BI _ RE ALLOC ( p , sz ) Ġorg _ lwjgl _ realloc ( p , sz ) Ċ # define ĠST BI _ FREE ( p ) ĠĠĠĠĠĠ Ġorg _ lwjgl _ free ( p ) Ċ # define ĠST BI _ FAILURE _ USER MSG Ċ # define ĠST BI _ ASSERT ( x ) Ċ # define ĠST B _ IMAGE _ IMPLEMENT ATION Ċ # define ĠST B _ IMAGE _ STATIC Ċ # include Ġ" st b _ image . h """ ") ĊĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠNative Ġbindings Ġto Ġst b _ image . h Ġfrom Ġthe Ġ${ url (" https :// github . com / nothing s / st b ", Ġ" st b Ġlibrary ") }. ĊĊĠĠĠĠĠĠĠ Ġ< h 3 > Quick Ġnotes </ h 3 > ĊĊĠĠĠĠĠĠĠ ĠPri mar ily Ġof Ġinterest Ġto Ġgame Ġdevelopers Ġand Ġother Ġpeople Ġwho Ġcan Ġavoid Ġproblematic Ġimages Ġand Ġonly Ġneed Ġthe Ġtrivial Ġinterface . ĠSupported Ġformats : ĊĠĠĠĠĠĠĠ Ġ${ ul ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" JPEG Ġbaseline Ġ& Ġprogress ive Ġ( 1 2 Ġb pc / ar ithmetic Ġnot Ġsupported , Ġsame Ġas Ġstock ĠI J G Ġlib ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" PNG Ġ 1 / 2 / 4 / 8 / 1 6 - bit - per - channel ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" T GA Ġ( not Ġsure Ġwhat Ġsubset , Ġif Ġa Ġsubset )", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" B MP Ġnon - 1 bpp , Ġnon - R LE ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" P SD Ġ( comp os ited Ġview Ġonly , Ġno Ġextra Ġchannels , Ġ 8 / 1 6 Ġbit - per - channel )", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" G IF Ġ(* desired _ channels Ġalways Ġreports Ġas Ġ 4 - channel )", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" HDR Ġ( rad iance Ġrgb E Ġformat )", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" PIC Ġ( Soft image ĠP IC )", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" PN M Ġ( PP M Ġand ĠP GM Ġbinary Ġonly )" ĊĠĠĠĠĠĠĠ Ġ)} ĊĊĠĠĠĠĠĠĠ ĠAnimated ĠGIF Ġstill Ġneeds Ġa Ġproper ĠAPI , Ġbut Ġ${ url (" http :// gist . github . com / ur r aka / 6 8 5 d 9 a 6 3 4 0 b 2 6 b 8 3 0 d 4 9 ", Ġ" here ") }' s Ġone Ġway Ġto Ġdo Ġit . ĊĊĠĠĠĠĠĠĠ ĠFeatures : ĊĠĠĠĠĠĠĠ Ġ${ ul ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" decode Ġfrom Ġmemory Ġ< s > or Ġthrough ĠFILE Ġ( define ĠST BI _ NO _ ST DIO Ġto Ġremove Ġcode )</ s >", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" decode Ġfrom Ġarbitrary ĠI / O Ġcallbacks ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" SIMD Ġacceleration Ġon Ġx 8 6 / x 6 4 Ġ( SSE 2 ) Ġand ĠARM Ġ( NEON )" ĊĠĠĠĠĠĠĠ Ġ)} ĊĊĠĠĠĠĠĠĠ ĠLimit ations : ĊĠĠĠĠĠĠĠ Ġ${ ul ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" no Ġ 1 6 - bit - per - channel ĠPNG ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" no Ġ 1 2 - bit - per - channel ĠJPEG ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" no ĠJPEG s Ġwith Ġarithmetic Ġcoding ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" no Ġ 1 - bit ĠB MP ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" G IF Ġalways Ġreturns Ġ* channels _ in _ file = 4 " ĊĠĠĠĠĠĠĠ Ġ)} ĊĊĠĠĠĠĠĠĠ ĠBasic Ġusage Ġ( see ĠH DR Ġdiscussion Ġbelow Ġfor ĠH DR Ġusage ): ĊĠĠĠĠĠĠĠ Ġ${ code Block (""" Ċ int Ġx , y , n ; Ċ unsigned Ġchar Ġ* data Ġ= Ġst bi _ load ( filename , Ġ& x , Ġ& y , Ġ& n , Ġ 0 ); Ċ // Ġ... Ġprocess Ġdata Ġif Ġnot ĠNULL Ġ... Ċ // Ġ... Ġx Ġ= Ġwidth , Ġy Ġ= Ġheight , Ġn Ġ= Ġ# Ġ 8 - bit Ġcomponents Ġper Ġpixel Ġ... Ċ // Ġ... Ġreplace Ġ' 0 ' Ġwith Ġ' 1 ' .. ' 4 ' Ġto Ġforce Ġthat Ġmany Ġcomponents Ġper Ġpixel Ċ // Ġ... Ġbut Ġ' n ' Ġwill Ġalways Ġbe Ġthe Ġnumber Ġthat Ġit Ġwould Ġhave Ġbeen Ġif Ġyou Ġsaid Ġ 0 Ċ st bi _ image _ free ( data ) "" ")} ĊĊĠĠĠĠĠĠĠ Ġ< h 3 > HDR Ġimage Ġsupport </ h 3 > ĊĊĠĠĠĠĠĠĠ Ġst b _ image Ġnow Ġsupports Ġloading ĠH DR Ġimages Ġin Ġgeneral , Ġand Ġcurrently Ġthe ĠRad iance Ġ. HDR Ġfile Ġformat , Ġalthough Ġthe Ġsupport Ġis Ġprovided Ġgener ically . ĠYou ĊĠĠĠĠĠĠĠ Ġcan Ġstill Ġload Ġany Ġfile Ġthrough Ġthe Ġexisting Ġinterface ; Ġif Ġyou Ġattempt Ġto Ġload Ġan ĠH DR Ġfile , Ġit Ġwill Ġbe Ġautomatically Ġrem apped Ġto ĠL DR , Ġassuming Ġgamma ĊĠĠĠĠĠĠĠĠ 2 . 2 Ġand Ġan Ġarbitrary Ġscale Ġfactor Ġdefault ing Ġto Ġ 1 ; Ġboth Ġof Ġthese Ġconstants Ġcan Ġbe Ġre configured Ġthrough Ġthis Ġinterface : ĊĠĠĠĠĠĠĠ Ġ${ code Block (""" Ċ st bi _ hdr _ to _ ldr _ gamma ( 2 . 2 f ); Ċ st bi _ hdr _ to _ ldr _ scale ( 1 . 0 f ); """ ĊĠĠĠĠĠĠĠ Ġ)} ĊĠĠĠĠĠĠĠ Ġ( note , Ġdo Ġnot Ġuse Ġ< em > inverse </ em > Ġconstants ; Ġst bi _ image Ġwill Ġinvert Ġthem Ġappropriately ). ĊĊĠĠĠĠĠĠĠ ĠAdditionally , Ġthere Ġis Ġa Ġnew , Ġparallel Ġinterface Ġfor Ġloading Ġfiles Ġas Ġ( linear ) Ġfloats Ġto Ġpreserve Ġthe Ġfull Ġdynamic Ġrange : ĊĠĠĠĠĠĠĠ Ġ${ code Block (""" Ċ float Ġ* data Ġ= Ġst bi _ load f ( filename , Ġ& x , Ġ& y , Ġ& n , Ġ 0 ); "" ")} ĊĠĠĠĠĠĠĠ ĠIf Ġyou Ġload ĠL DR Ġimages Ġthrough Ġthis Ġinterface , Ġthose Ġimages Ġwill Ġbe Ġprom oted Ġto Ġfloating Ġpoint Ġvalues , Ġrun Ġthrough Ġthe Ġinverse Ġof Ġconstants ĊĠĠĠĠĠĠĠ Ġcorresponding Ġto Ġthe Ġabove : ĊĠĠĠĠĠĠĠ Ġ${ code Block (""" Ċ st bi _ ldr _ to _ hdr _ scale ( 1 . 0 f ); Ċ st bi _ ldr _ to _ hdr _ gamma ( 2 . 2 f ); "" ")} ĊĠĠĠĠĠĠĠ ĠFinally , Ġgiven Ġa Ġfilename Ġ( or Ġan Ġopen Ġfile Ġor Ġmemory Ġblock ) Ġcontaining Ġimage Ġdata , Ġyou Ġcan Ġquery Ġfor Ġthe Ġ" most Ġappropriate " Ġinterface Ġto Ġuse Ġ( that Ġis , ĊĠĠĠĠĠĠĠ Ġwhether Ġthe Ġimage Ġis ĠH DR Ġor Ġnot ), Ġusing : ĊĠĠĠĠĠĠĠ Ġ${ code Block (""" Ċ st bi _ is _ hdr ( char Ġ* filename ); "" ")} ĊĊĠĠĠĠĠĠĠ Ġ< h 3 > iPhone ĠPNG Ġsupport </ h 3 > ĊĠĠĠĠĠĠĠ ĠBy Ġdefault Ġwe Ġconvert Ġi phone - formatted ĠPNG s Ġback Ġto ĠRGB , Ġeven Ġthough Ġthey Ġare Ġinternally Ġencoded Ġdifferently . ĠYou Ġcan Ġdisable Ġthis Ġconversion Ġby ĊĠĠĠĠĠĠĠ Ġcalling Ġ# convert _ iphone _ png _ to _ rgb ()( 0 ), Ġin Ġwhich Ġcase Ġyou Ġwill Ġalways Ġjust Ġget Ġthe Ġnative Ġi phone Ġ" format " Ġthrough Ġ( which Ġis ĠB GR Ġstored Ġin ĠRGB ). ĊĊĠĠĠĠĠĠĠ ĠCall Ġ# set _ un pre multiply _ on _ load ()( 1 ) Ġas Ġwell Ġto Ġforce Ġa Ġdivide Ġper Ġpixel Ġto Ġremove Ġany Ġpre multiplied Ġalpha Ġ* only * Ġif Ġthe Ġimage Ġfile Ġexplicitly Ġsays ĊĠĠĠĠĠĠĠ Ġthere 's Ġpre multiplied Ġdata Ġ( currently Ġonly Ġhappens Ġin ĠiPhone Ġimages , Ġand Ġonly Ġif ĠiPhone Ġconvert - to - rgb Ġprocessing Ġis Ġon ). ĊĠĠĠĠĠĠĠ Ġ""" ĊĊĠĠĠ ĠEnum Constant ( ĊĠĠĠĠĠĠĠ Ġ" Component Ġcount .", ĊĊĠĠĠĠĠĠĠ Ġ" default " Ġenum Ġ" Default Ġcomponent Ġcount , Ġused Ġas Ġan Ġargument Ġto Ġ{@ code Ġdesired _ channels }. ", ĊĠĠĠĠĠĠĠ Ġ" grey ". enum , ĊĠĠĠĠĠĠĠ Ġ" grey _ alpha ". enum , ĊĠĠĠĠĠĠĠ Ġ" rgb ". enum , ĊĠĠĠĠĠĠĠ Ġ" rgb _ alpha ". enum ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġload Ġ= Ġst bi _ uc _ p ( ĊĠĠĠĠĠĠĠ Ġ" load ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠLoads Ġan Ġimage Ġfrom Ġthe Ġspecified Ġfile . ĊĊĠĠĠĠĠĠĠ ĠThe Ġreturn Ġvalue Ġfrom Ġan Ġimage Ġloader Ġis Ġan Ġ{@ code Ġ' unsigned Ġchar Ġ* '} Ġwhich Ġpoints Ġto Ġthe Ġpixel Ġdata , Ġor Ġ# NULL Ġon Ġan Ġallocation Ġfailure Ġor Ġif Ġthe Ġimage ĊĠĠĠĠĠĠĠ Ġis Ġcorrupt Ġor Ġinvalid . ĠThe Ġpixel Ġdata Ġconsists Ġof Ġ{@ code Ġ* y } Ġscan lines Ġof Ġ{@ code Ġ* x } Ġpixels , Ġwith Ġeach Ġpixel Ġconsisting Ġof ĠN Ġinter leaved Ġ 8 - bit ĊĠĠĠĠĠĠĠ Ġcomponents ; Ġthe Ġfirst Ġpixel Ġpointed Ġto Ġis Ġtop - left - most Ġin Ġthe Ġimage . ĠThere Ġis Ġno Ġpadding Ġbetween Ġimage Ġscan lines Ġor Ġbetween Ġpixels , Ġregardless Ġof ĊĠĠĠĠĠĠĠ Ġformat . ĠThe Ġnumber Ġof Ġcomponents ĠN Ġis Ġ{@ code Ġ' desired _ channels '} Ġif Ġ{@ code Ġdesired _ channels } Ġis Ġnon - zero , Ġor Ġ{@ code Ġ* channels _ in _ file } Ġotherwise . ĠIf ĊĠĠĠĠĠĠĠ Ġ{@ code Ġdesired _ channels } Ġis Ġnon - zero , Ġ{@ code Ġ* channels _ in _ file } Ġhas Ġthe Ġnumber Ġof Ġcomponents Ġthat Ġ< i > would </ i > Ġhave Ġbeen Ġoutput Ġotherwise . ĠE . g . Ġif Ġyou ĊĠĠĠĠĠĠĠ Ġset Ġ{@ code Ġdesired _ channels } Ġto Ġ 4 , Ġyou Ġwill Ġalways Ġget ĠRGBA Ġoutput , Ġbut Ġyou Ġcan Ġcheck Ġ{@ code Ġ* channels _ in _ file } Ġto Ġsee Ġif Ġit 's Ġt riv ially Ġopaque Ġbecause ĊĠĠĠĠĠĠĠ Ġe . g . Ġthere Ġwere Ġonly Ġ 3 Ġchannels Ġin Ġthe Ġsource Ġimage . ĊĊĠĠĠĠĠĠĠ ĠAn Ġoutput Ġimage Ġwith ĠN Ġcomponents Ġhas Ġthe Ġfollowing Ġcomponents Ġinter leaved Ġin Ġthis Ġorder Ġin Ġeach Ġpixel : ĊĠĠĠĠĠĠĠ Ġ${ code Block (""" Ċ N =\ # channels _ in _ file ĠĠĠĠ Ġcomponents ĊĠĠ 1 ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrey ĊĠĠ 2 ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrey , Ġalpha ĊĠĠ 3 ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġred , Ġgreen , Ġblue ĊĠĠ 4 ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġred , Ġgreen , Ġblue , Ġalpha "" ")} ĊĠĠĠĠĠĠĠ ĠIf Ġimage Ġloading Ġfails Ġfor Ġany Ġreason , Ġthe Ġreturn Ġvalue Ġwill Ġbe Ġ# NULL , Ġand Ġ{@ code Ġ* x }, Ġ{@ code Ġ* y }, Ġ{@ code Ġ* channels _ in _ file } Ġwill Ġbe Ġunchanged . ĠThe Ġfunction ĊĠĠĠĠĠĠĠ Ġ# failure _ reason () Ġcan Ġbe Ġqueried Ġfor Ġan Ġextremely Ġbrief , Ġend - user Ġun friendly Ġexplanation Ġof Ġwhy Ġthe Ġload Ġfailed . ĊĊĠĠĠĠĠĠĠ ĠPa let ted ĠPNG , ĠB MP , ĠGIF , Ġand ĠP IC Ġimages Ġare Ġautomatically Ġde pa lett ized . ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĊĠĠĠĠĠĠĠ Ġconst .. char ASCII _ p . IN (" filename ", Ġ" the Ġfile Ġname "), ĊĠĠĠĠĠĠĠ ĠCheck ( 1 ) .. AutoSize Result .. int _ p . OUT (" x ", Ġ" outputs Ġthe Ġimage Ġwidth Ġin Ġpixels "), ĊĠĠĠĠĠĠĠ ĠCheck ( 1 ) .. AutoSize Result .. int _ p . OUT (" y ", Ġ" outputs Ġthe Ġimage Ġheight Ġin Ġpixels "), ĊĠĠĠĠĠĠĠ ĠCheck ( 1 ) .. AutoSize Result ("( desired _ channels Ġ!= Ġ 0 Ġ? Ġdesired _ channels Ġ: Ġ\$ original )") .. int _ p . OUT (" channels _ in _ file ", Ġ" outputs Ġnumber Ġof Ġcomponents Ġin Ġimage "), ĊĠĠĠĠĠĠĠ Ġint . IN (" desired _ channels ", Ġ" 0 Ġor Ġ 1 .. 4 Ġto Ġforce Ġthat Ġmany Ġcomponents Ġper Ġpixel ", Ġ" 0 Ġ 1 Ġ 2 Ġ 3 Ġ 4 ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġst bi _ uc _ p ( ĊĠĠĠĠĠĠĠ Ġ" load _ from _ memory ", ĊĠĠĠĠĠĠĠ Ġ" In - memory Ġversion Ġof Ġ# load (). ", ĊĊĠĠĠĠĠĠĠ Ġconst .. st bi _ uc _ p . IN (" buffer ", Ġ" the Ġbuffer Ġfrom Ġwhich Ġto Ġload Ġthe Ġimage Ġdata "), ĊĠĠĠĠĠĠĠ ĠAuto Size (" buffer ") .. int . IN (" len ", Ġ" the Ġbuffer Ġlength , Ġin Ġbytes "), ĊĠĠĠĠĠĠĠ Ġload [" x "], ĊĠĠĠĠĠĠĠ Ġload [" y "], ĊĠĠĠĠĠĠĠ Ġload [" channels _ in _ file "], ĊĠĠĠĠĠĠĠ Ġload [" desired _ channels "] ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġst bi _ uc _ p ( ĊĠĠĠĠĠĠĠ Ġ" load _ from _ callbacks ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠCallback Ġversion Ġof Ġ# load (). ĊĊĠĠĠĠĠĠĠ ĠI / O Ġcallbacks Ġallow Ġyou Ġto Ġread Ġfrom Ġarbitrary Ġsources , Ġlike Ġpackaged Ġfiles Ġor Ġsome Ġother Ġsource . ĠData Ġread Ġfrom Ġcallbacks Ġare Ġprocessed Ġthrough Ġa ĊĠĠĠĠĠĠĠ Ġsmall Ġinternal Ġbuffer Ġ( currently Ġ 1 2 8 Ġbytes ) Ġto Ġtry Ġto Ġreduce Ġoverhead . ĊĊĠĠĠĠĠĠĠ ĠThe Ġthree Ġfunctions Ġyou Ġmust Ġdefine Ġare Ġ" read " Ġ( reads Ġsome Ġbytes Ġof Ġdata ), Ġ" skip " Ġ( skip s Ġsome Ġbytes Ġof Ġdata ), Ġ" eof " Ġ( reports Ġif Ġthe Ġstream Ġis Ġat Ġthe ĊĠĠĠĠĠĠĠ Ġend ). ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĊĠĠĠĠĠĠĠ Ġconst .. st bi _ io _ callbacks _ p . IN (" cl bk ", Ġ" an Ġ## ST BI IO Callbacks Ġstruct "), ĊĠĠĠĠĠĠĠ Ġnullable .. opaque _ p . IN (" user ", Ġ" a Ġpointer Ġto Ġuser Ġdata "), ĊĠĠĠĠĠĠĠ Ġload [" x "], ĊĠĠĠĠĠĠĠ Ġload [" y "], ĊĠĠĠĠĠĠĠ Ġload [" channels _ in _ file "], ĊĠĠĠĠĠĠĠ Ġload [" desired _ channels "] ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġst bi _ us _ p ( ĊĠĠĠĠĠĠĠ Ġ" load _ 1 6 ", ĊĠĠĠĠĠĠĠ Ġ" 1 6 - bits - per - channel Ġversion Ġof Ġ# load (). ", ĊĊĠĠĠĠĠĠĠ Ġconst .. char ASCII _ p . IN (" filename ", Ġ" the Ġfile Ġname "), ĊĠĠĠĠĠĠĠ Ġload [" x "], ĊĠĠĠĠĠĠĠ Ġload [" y "], ĊĠĠĠĠĠĠĠ Ġload [" channels _ in _ file "], ĊĠĠĠĠĠĠĠ Ġload [" desired _ channels "] ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġst bi _ us _ p ( ĊĠĠĠĠĠĠĠ Ġ" load _ 1 6 _ from _ memory ", ĊĠĠĠĠĠĠĠ Ġ" In - memory Ġversion Ġof Ġ# load _ 1 6 (). ", ĊĊĠĠĠĠĠĠĠ Ġconst .. st bi _ uc _ p . IN (" buffer ", Ġ" the Ġbuffer Ġfrom Ġwhich Ġto Ġload Ġthe Ġimage Ġdata "), ĊĠĠĠĠĠĠĠ ĠAuto Size (" buffer ") .. int . IN (" len ", Ġ" the Ġbuffer Ġlength , Ġin Ġbytes "), ĊĠĠĠĠĠĠĠ Ġload [" x "], ĊĠĠĠĠĠĠĠ Ġload [" y "], ĊĠĠĠĠĠĠĠ Ġload [" channels _ in _ file "], ĊĠĠĠĠĠĠĠ Ġload [" desired _ channels "] ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġst bi _ us _ p ( ĊĠĠĠĠĠĠĠ Ġ" load _ 1 6 _ from _ callbacks ", ĊĠĠĠĠĠĠĠ Ġ" Callback Ġversion Ġof Ġ# load _ 1 6 (). ", ĊĊĠĠĠĠĠĠĠ Ġconst .. st bi _ io _ callbacks _ p . IN (" cl bk ", Ġ" an Ġ## ST BI IO Callbacks Ġstruct "), ĊĠĠĠĠĠĠĠ Ġnullable .. opaque _ p . IN (" user ", Ġ" a Ġpointer Ġto Ġuser Ġdata "), ĊĠĠĠĠĠĠĠ Ġload [" x "], ĊĠĠĠĠĠĠĠ Ġload [" y "], ĊĠĠĠĠĠĠĠ Ġload [" channels _ in _ file "], ĊĠĠĠĠĠĠĠ Ġload [" desired _ channels "] ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfloat _ p ( ĊĠĠĠĠĠĠĠ Ġ" load f ", ĊĠĠĠĠĠĠĠ Ġ" Floating - point Ġversion Ġof Ġ# load (). ", ĊĊĠĠĠĠĠĠĠ Ġconst .. char ASCII _ p . IN (" filename ", Ġ" the Ġfile Ġname "), ĊĠĠĠĠĠĠĠ Ġload [" x "], ĊĠĠĠĠĠĠĠ Ġload [" y "], ĊĠĠĠĠĠĠĠ Ġload [" channels _ in _ file "], ĊĠĠĠĠĠĠĠ Ġload [" desired _ channels "] ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfloat _ p ( ĊĠĠĠĠĠĠĠ Ġ" load f _ from _ memory ", ĊĠĠĠĠĠĠĠ Ġ" Floating - point Ġversion Ġof Ġ# load _ from _ memory (). ", ĊĊĠĠĠĠĠĠĠ Ġconst .. st bi _ uc _ p . IN (" buffer ", Ġ" the Ġbuffer Ġfrom Ġwhich Ġto Ġload Ġthe Ġimage Ġdata "), ĊĠĠĠĠĠĠĠ ĠAuto Size (" buffer ") .. int . IN (" len ", Ġ" the Ġbuffer Ġlength , Ġin Ġbytes "), ĊĠĠĠĠĠĠĠ Ġload [" x "], ĊĠĠĠĠĠĠĠ Ġload [" y "], ĊĠĠĠĠĠĠĠ Ġload [" channels _ in _ file "], ĊĠĠĠĠĠĠĠ Ġload [" desired _ channels "] ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfloat _ p ( ĊĠĠĠĠĠĠĠ Ġ" load f _ from _ callbacks ", ĊĠĠĠĠĠĠĠ Ġ" Floating - point Ġversion Ġof Ġ# load _ from _ callbacks (). ", ĊĊĠĠĠĠĠĠĠ Ġconst .. st bi _ io _ callbacks _ p . IN (" cl bk ", Ġ" an Ġ## ST BI IO Callbacks Ġstruct "), ĊĠĠĠĠĠĠĠ Ġnullable .. opaque _ p . IN (" user ", Ġ" a Ġpointer Ġto Ġuser Ġdata "), ĊĠĠĠĠĠĠĠ Ġload [" x "], ĊĠĠĠĠĠĠĠ Ġload [" y "], ĊĠĠĠĠĠĠĠ Ġload [" channels _ in _ file "], ĊĠĠĠĠĠĠĠ Ġload [" desired _ channels "] ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġvoid ( ĊĠĠĠĠĠĠĠ Ġ" hdr _ to _ ldr _ gamma ", ĊĠĠĠĠĠĠĠ Ġ" Changes Ġthe Ġgamma Ġvalue Ġused Ġwhen Ġconverting ĠH DR Ġimages Ġto ĠL DR . ĠThe Ġdefault Ġvalue Ġis Ġ 2 . 2 f ", ĊĊĠĠĠĠĠĠĠ Ġfloat . IN (" gamma ", Ġ" the Ġgamma Ġvalue ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġvoid ( ĊĠĠĠĠĠĠĠ Ġ" hdr _ to _ ldr _ scale ", ĊĠĠĠĠĠĠĠ Ġ" Changes Ġthe Ġscale Ġfactor Ġused Ġwhen Ġconverting ĠH DR Ġimages Ġto ĠL DR . ĠThe Ġdefault Ġvalue Ġis Ġ 1 . 0 f ", ĊĊĠĠĠĠĠĠĠ Ġfloat . IN (" scale ", Ġ" the Ġscale Ġfactor ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġvoid ( ĊĠĠĠĠĠĠĠ Ġ" ldr _ to _ hdr _ gamma ", ĊĠĠĠĠĠĠĠ Ġ" Changes Ġthe Ġgamma Ġvalue Ġused Ġwhen Ġconverting ĠL DR Ġimages Ġto ĠH DR . ĠThe Ġdefault Ġvalue Ġis Ġ 2 . 2 f ", ĊĊĠĠĠĠĠĠĠ Ġfloat . IN (" gamma ", Ġ" the Ġgamma Ġvalue ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġvoid ( ĊĠĠĠĠĠĠĠ Ġ" ldr _ to _ hdr _ scale ", ĊĠĠĠĠĠĠĠ Ġ" Changes Ġthe Ġscale Ġvalue Ġused Ġwhen Ġconverting ĠL DR Ġimages Ġto ĠH DR . ĠThe Ġdefault Ġvalue Ġis Ġ 1 . 0 f ", ĊĊĠĠĠĠĠĠĠ Ġfloat . IN (" scale ", Ġ" the Ġscale Ġfactor ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġint b ( ĊĠĠĠĠĠĠĠ Ġ" is _ hdr ", ĊĠĠĠĠĠĠĠ Ġ" Checks Ġif Ġthe Ġspecified Ġfile Ġcontains Ġan ĠH DR Ġimage .", ĊĊĠĠĠĠĠĠĠ Ġconst .. char ASCII _ p . IN (" filename ", Ġ" the Ġfile Ġname "), ĊĊĠĠĠĠĠĠĠ Ġreturn Doc Ġ= Ġ" 1 Ġif Ġthe Ġimage Ġis ĠH DR , Ġ 0 Ġotherwise " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġint b ( ĊĠĠĠĠĠĠĠ Ġ" is _ hdr _ from _ memory ", ĊĠĠĠĠĠĠĠ Ġ" In - memory Ġversion Ġof Ġ# is _ hdr (). ", ĊĊĠĠĠĠĠĠĠ Ġconst .. st bi _ uc _ p . IN (" buffer ", Ġ" the Ġbuffer Ġfrom Ġwhich Ġto Ġread Ġthe Ġimage Ġdata "), ĊĠĠĠĠĠĠĠ ĠAuto Size (" buffer ") .. int . IN (" len ", Ġ" the Ġbuffer Ġlength , Ġin Ġbytes ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġint b ( ĊĠĠĠĠĠĠĠ Ġ" is _ hdr _ from _ callbacks ", ĊĠĠĠĠĠĠĠ Ġ" Callback Ġversion Ġof Ġ# is _ hdr (). ", ĊĊĠĠĠĠĠĠĠ Ġconst .. st bi _ io _ callbacks _ p . IN (" cl bk ", Ġ" an Ġ## ST BI IO Callbacks Ġstruct "), ĊĠĠĠĠĠĠĠ Ġnullable .. opaque _ p . IN (" user ", Ġ" a Ġpointer Ġto Ġuser Ġdata ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġconst .. char ASCII _ p ( ĊĠĠĠĠĠĠĠ Ġ" failure _ reason ", ĊĠĠĠĠĠĠĠ Ġ" Returns Ġa Ġbrief Ġreason Ġfor Ġfailure ." ĊĠĠĠ Ġ) ĊĊĠĠĠ ĠOff Heap Only .. void ( ĊĠĠĠĠĠĠĠ Ġ" image _ free ", ĊĠĠĠĠĠĠĠ Ġ" Fre es Ġa Ġloaded Ġimage ", ĊĊĠĠĠĠĠĠĠ ĠMulti Type ( Pointer Mapping . DATA _ SHORT , ĠPointer Mapping . DATA _ FLOAT ) .. Unsafe .. void _ p . IN (" retval _ from _ st bi _ load ", Ġ" an Ġst b Ġimage ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġint b ( ĊĠĠĠĠĠĠĠ Ġ" info ", ĊĠĠĠĠĠĠĠ Ġ" Returns Ġimage Ġdimensions Ġ& amp ; Ġcomponents Ġwithout Ġfully Ġdecoding Ġthe Ġimage .", ĊĊĠĠĠĠĠĠĠ Ġconst .. char ASCII _ p . IN (" filename ", Ġ" the Ġfile Ġname "), ĊĠĠĠĠĠĠĠ ĠCheck ( 1 ) .. int _ p . OUT (" x ", Ġ" outputs Ġthe Ġimage Ġwidth Ġin Ġpixels "), ĊĠĠĠĠĠĠĠ ĠCheck ( 1 ) .. int _ p . OUT (" y ", Ġ" outputs Ġthe Ġimage Ġheight Ġin Ġpixels "), ĊĠĠĠĠĠĠĠ ĠCheck ( 1 ) .. int _ p . OUT (" comp ", Ġ" outputs Ġnumber Ġof Ġcomponents Ġin Ġimage "), ĊĊĠĠĠĠĠĠĠ Ġreturn Doc Ġ= Ġ" 1 Ġon Ġsuccess , Ġ 0 Ġon Ġfailure " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġint b ( ĊĠĠĠĠĠĠĠ Ġ" info _ from _ memory ", ĊĠĠĠĠĠĠĠ Ġ" In - memory Ġversion Ġof Ġ# info (). ", ĊĊĠĠĠĠĠĠĠ Ġconst .. st bi _ uc _ p . IN (" buffer ", Ġ" the Ġbuffer Ġfrom Ġwhich Ġto Ġread Ġthe Ġimage Ġdata "), ĊĠĠĠĠĠĠĠ ĠAuto Size (" buffer ") .. int . IN (" len ", Ġ" the Ġbuffer Ġlength , Ġin Ġbytes "), ĊĠĠĠĠĠĠĠ ĠCheck ( 1 ) .. int _ p . OUT (" x ", Ġ" outputs Ġthe Ġimage Ġwidth Ġin Ġpixels "), ĊĠĠĠĠĠĠĠ ĠCheck ( 1 ) .. int _ p . OUT (" y ", Ġ" outputs Ġthe Ġimage Ġheight Ġin Ġpixels "), ĊĠĠĠĠĠĠĠ ĠCheck ( 1 ) .. int _ p . OUT (" comp ", Ġ" outputs Ġnumber Ġof Ġcomponents Ġin Ġimage ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġint b ( ĊĠĠĠĠĠĠĠ Ġ" info _ from _ callbacks ", ĊĠĠĠĠĠĠĠ Ġ" Callback Ġversion Ġof Ġ# info (). ", ĊĊĠĠĠĠĠĠĠ Ġconst .. st bi _ io _ callbacks _ p . IN (" cl bk ", Ġ" an Ġ## ST BI IO Callbacks Ġstruct "), ĊĠĠĠĠĠĠĠ Ġnullable .. opaque _ p . IN (" user ", Ġ" a Ġpointer Ġto Ġuser Ġdata "), ĊĠĠĠĠĠĠĠ ĠCheck ( 1 ) .. int _ p . OUT (" x ", Ġ" outputs Ġthe Ġimage Ġwidth Ġin Ġpixels "), ĊĠĠĠĠĠĠĠ ĠCheck ( 1 ) .. int _ p . OUT (" y ", Ġ" outputs Ġthe Ġimage Ġheight Ġin Ġpixels "), ĊĠĠĠĠĠĠĠ ĠCheck ( 1 ) .. int _ p . OUT (" comp ", Ġ" outputs Ġnumber Ġof Ġcomponents Ġin Ġimage ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġvoid ( ĊĠĠĠĠĠĠĠ Ġ" set _ un pre multiply _ on _ load ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠFor Ġimage Ġformats Ġthat Ġexplicitly Ġnot ate Ġthat Ġthey Ġhave Ġpre multiplied Ġalpha , Ġwe Ġjust Ġreturn Ġthe Ġcolors Ġas Ġstored Ġin Ġthe Ġfile . ĠSet Ġthis Ġflag Ġto Ġforce ĊĠĠĠĠĠĠĠ Ġun pre multip lication . ĠResults Ġare Ġundefined Ġif Ġthe Ġun pre multiply Ġoverflow s . ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĊĠĠĠĠĠĠĠ Ġint b . IN (" flag _ true _ if _ should _ un pre multiply ", Ġ" the Ġun pre multiply Ġflag ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġvoid ( ĊĠĠĠĠĠĠĠ Ġ" convert _ iphone _ png _ to _ rgb ", ĊĠĠĠĠĠĠĠ Ġ" Indic ate Ġwhether Ġwe Ġshould Ġprocess ĠiPhone Ġimages Ġback Ġto Ġcanonical Ġformat , Ġor Ġjust Ġpass Ġthem Ġthrough Ġ\" as - is \" .", ĊĊĠĠĠĠĠĠĠ Ġint b . IN (" flag _ true _ if _ should _ convert ", Ġ" the Ġconvert ĠiPhone ĠPNG Ġto ĠRGB Ġflag ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġvoid ( ĊĠĠĠĠĠĠĠ Ġ" set _ flip _ vert ically _ on _ load ", ĊĠĠĠĠĠĠĠ Ġ" F lips Ġthe Ġimage Ġvert ically , Ġso Ġthe Ġfirst Ġpixel Ġin Ġthe Ġoutput Ġarray Ġis Ġthe Ġbottom Ġleft .", ĊĊĠĠĠĠĠĠĠ Ġint b . IN (" flag _ true _ if _ should _ flip ", Ġ" the Ġflip Ġvert ically Ġon Ġload Ġflag ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġchar _ p ( ĊĠĠĠĠĠĠĠ Ġ" zlib _ decode _ malloc _ g ues ssize ", ĊĠĠĠĠĠĠĠ Ġ" Z LIB Ġclient Ġ- Ġused Ġby ĠPNG , Ġavailable Ġfor Ġother Ġpurposes ", ĊĊĠĠĠĠĠĠĠ Ġconst .. char _ p . IN (" buffer ", Ġ""), ĊĠĠĠĠĠĠĠ ĠAuto Size (" buffer ") .. int . IN (" len ", Ġ""), ĊĠĠĠĠĠĠĠ Ġint . IN (" initial _ size ", Ġ""), ĊĠĠĠĠĠĠĠ ĠAuto Size Result .. int _ p . OUT (" out len ", Ġ"") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġchar _ p ( ĊĠĠĠĠĠĠĠ Ġ" zlib _ decode _ malloc _ g ues ssize _ header flag ", ĊĠĠĠĠĠĠĠ Ġ" Z LIB Ġclient Ġ- Ġused Ġby ĠPNG , Ġavailable Ġfor Ġother Ġpurposes ", ĊĊĠĠĠĠĠĠĠ Ġconst .. char _ p . IN (" buffer ", Ġ""), ĊĠĠĠĠĠĠĠ ĠAuto Size (" buffer ") .. int . IN (" len ", Ġ""), ĊĠĠĠĠĠĠĠ Ġint . IN (" initial _ size ", Ġ""), ĊĠĠĠĠĠĠĠ ĠAuto Size Result .. int _ p . OUT (" out len ", Ġ""), ĊĠĠĠĠĠĠĠ Ġint b . IN (" parse _ header ", Ġ"") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġchar _ p ( ĊĠĠĠĠĠĠĠ Ġ" zlib _ decode _ malloc ", ĊĠĠĠĠĠĠĠ Ġ" Z LIB Ġclient Ġ- Ġused Ġby ĠPNG , Ġavailable Ġfor Ġother Ġpurposes ", ĊĊĠĠĠĠĠĠĠ Ġconst .. char _ p . IN (" buffer ", Ġ""), ĊĠĠĠĠĠĠĠ ĠAuto Size (" buffer ") .. int . IN (" len ", Ġ""), ĊĠĠĠĠĠĠĠ ĠAuto Size Result .. int _ p . OUT (" out len ", Ġ"") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġint ( ĊĠĠĠĠĠĠĠ Ġ" zlib _ decode _ buffer ", ĊĠĠĠĠĠĠĠ Ġ" Z LIB Ġclient Ġ- Ġused Ġby ĠPNG , Ġavailable Ġfor Ġother Ġpurposes ", ĊĊĠĠĠĠĠĠĠ Ġchar _ p . OUT (" o buffer ", Ġ""), ĊĠĠĠĠĠĠĠ ĠAuto Size (" o buffer ") .. int . IN (" olen ", Ġ""), ĊĠĠĠĠĠĠĠ Ġconst .. char _ p . IN (" i buffer ", Ġ""), ĊĠĠĠĠĠĠĠ ĠAuto Size (" i buffer ") .. int . IN (" ilen ", Ġ"") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġchar _ p ( ĊĠĠĠĠĠĠĠ Ġ" zlib _ decode _ no header _ malloc ", ĊĠĠĠĠĠĠĠ Ġ" Z LIB Ġclient Ġ- Ġused Ġby ĠPNG , Ġavailable Ġfor Ġother Ġpurposes ", ĊĊĠĠĠĠĠĠĠ Ġconst .. char _ p . IN (" buffer ", Ġ""), ĊĠĠĠĠĠĠĠ ĠAuto Size (" buffer ") .. int . IN (" len ", Ġ""), ĊĠĠĠĠĠĠĠ ĠAuto Size Result .. int _ p . OUT (" out len ", Ġ"") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġint ( ĊĠĠĠĠĠĠĠ Ġ" zlib _ decode _ no header _ buffer ", ĊĠĠĠĠĠĠĠ Ġ" Z LIB Ġclient Ġ- Ġused Ġby ĠPNG , Ġavailable Ġfor Ġother Ġpurposes ", ĊĊĠĠĠĠĠĠĠ Ġchar _ p . OUT (" o buffer ", Ġ""), ĊĠĠĠĠĠĠĠ ĠAuto Size (" o buffer ") .. int . IN (" olen ", Ġ""), ĊĠĠĠĠĠĠĠ Ġconst .. char _ p . IN (" i buffer ", Ġ""), ĊĠĠĠĠĠĠĠ ĠAuto Size (" i buffer ") .. int . IN (" ilen ", Ġ"") ĊĠĠĠ Ġ) Ċ }