TurboJPEG C API: Add BMP/PPM load/save functions

The main justification for this is to provide new libjpeg-turbo users
with a quick & easy way of developing a complete JPEG
compression/decompression program without requiring them to build
libjpeg-turbo from source (which was necessary in order to use the
project-private bmp API) or to use external libraries.  These new
functions build upon significant enhancements to rdbmp.c, wrbmp.c,
rdppm.c, and wrppm.c which allow those engines to convert directly
between the native pixel format of the file and a pixel format
("colorspace" in libjpeg parlance) specified by the calling program.
rdbmp.c and wrbmp.c have also been modified such that the calling
program can choose to read or write image rows in the native (bottom-up)
order of the file format, thus eliminating the need to use an inversion
array.  tjLoadImage() and tjSaveImage() leverage these new underlying
features in order to significantly improve upon the performance of the
old bmp API.

Because these new functions cannot work without the libjpeg-turbo
colorspace extensions, the libjpeg-compatible code in turbojpeg.c has
been removed.  That code was only there to serve as an example of how
to use the TurboJPEG API on top of libjpeg, but more specific, buildable
examples now exist in the https://github.com/libjpeg-turbo/ijg
repository.
24 files changed
tree: 6fbdafe8261f0be3bd31981c603bdb9b6fd2ae56
  1. ci/
  2. cmakescripts/
  3. doc/
  4. java/
  5. md5/
  6. release/
  7. sharedlib/
  8. simd/
  9. testimages/
  10. win/
  11. .gitattributes
  12. .travis.yml
  13. appveyor.yml
  14. BUILDING.md
  15. cderror.h
  16. cdjpeg.c
  17. cdjpeg.h
  18. change.log
  19. ChangeLog.md
  20. cjpeg.1
  21. cjpeg.c
  22. CMakeLists.txt
  23. cmyk.h
  24. coderules.txt
  25. djpeg.1
  26. djpeg.c
  27. doxygen-extra.css
  28. doxygen.config
  29. example.c
  30. jaricom.c
  31. jcapimin.c
  32. jcapistd.c
  33. jcarith.c
  34. jccoefct.c
  35. jccolext.c
  36. jccolor.c
  37. jcdctmgr.c
  38. jchuff.c
  39. jchuff.h
  40. jcicc.c
  41. jcinit.c
  42. jcmainct.c
  43. jcmarker.c
  44. jcmaster.c
  45. jcomapi.c
  46. jconfig.h.in
  47. jconfig.txt
  48. jconfigint.h.in
  49. jcparam.c
  50. jcphuff.c
  51. jcprepct.c
  52. jcsample.c
  53. jcstest.c
  54. jctrans.c
  55. jdapimin.c
  56. jdapistd.c
  57. jdarith.c
  58. jdatadst-tj.c
  59. jdatadst.c
  60. jdatasrc-tj.c
  61. jdatasrc.c
  62. jdcoefct.c
  63. jdcoefct.h
  64. jdcol565.c
  65. jdcolext.c
  66. jdcolor.c
  67. jdct.h
  68. jddctmgr.c
  69. jdhuff.c
  70. jdhuff.h
  71. jdicc.c
  72. jdinput.c
  73. jdmainct.c
  74. jdmainct.h
  75. jdmarker.c
  76. jdmaster.c
  77. jdmaster.h
  78. jdmerge.c
  79. jdmrg565.c
  80. jdmrgext.c
  81. jdphuff.c
  82. jdpostct.c
  83. jdsample.c
  84. jdsample.h
  85. jdtrans.c
  86. jerror.c
  87. jerror.h
  88. jfdctflt.c
  89. jfdctfst.c
  90. jfdctint.c
  91. jidctflt.c
  92. jidctfst.c
  93. jidctint.c
  94. jidctred.c
  95. jinclude.h
  96. jmemmgr.c
  97. jmemnobs.c
  98. jmemsys.h
  99. jmorecfg.h
  100. jpeg_nbits_table.h
  101. jpegcomp.h
  102. jpegint.h
  103. jpeglib.h
  104. jpegtran.1
  105. jpegtran.c
  106. jquant1.c
  107. jquant2.c
  108. jsimd.h
  109. jsimd_none.c
  110. jsimddct.h
  111. jstdhuff.c
  112. jutils.c
  113. jversion.h
  114. libjpeg.map.in
  115. libjpeg.txt
  116. LICENSE.md
  117. rdbmp.c
  118. rdcolmap.c
  119. rdgif.c
  120. rdjpgcom.1
  121. rdjpgcom.c
  122. rdppm.c
  123. rdrle.c
  124. rdswitch.c
  125. rdtarga.c
  126. README.ijg
  127. README.md
  128. structure.txt
  129. tjbench.c
  130. tjbenchtest.in
  131. tjbenchtest.java.in
  132. tjexampletest.in
  133. tjunittest.c
  134. tjutil.c
  135. tjutil.h
  136. transupp.c
  137. transupp.h
  138. turbojpeg-jni.c
  139. turbojpeg-mapfile
  140. turbojpeg-mapfile.jni
  141. turbojpeg.c
  142. turbojpeg.h
  143. usage.txt
  144. wizard.txt
  145. wrbmp.c
  146. wrgif.c
  147. wrjpgcom.1
  148. wrjpgcom.c
  149. wrppm.c
  150. wrrle.c
  151. wrtarga.c