TurboJPEG 3 API overhaul

(ChangeLog update forthcoming)

- Prefix all function names with "tj3" and remove version suffixes from
  function names.  (Future API overhauls will increment the prefix to
  "tj4", etc., thus retaining backward API/ABI compatibility without
  versioning each individual function.)

- Replace stateless boolean flags (including TJ*FLAG_ARITHMETIC and
  TJ*FLAG_LOSSLESS, which were never released) with stateful integer
  parameters, the value of which persists between function calls.
  * Use parameters for the JPEG quality and subsampling as well, in
    order to eliminate the awkwardness of specifying function arguments
    that weren't relevant for lossless compression.
  * tj3DecompressHeader() now stores all relevant information about the
    JPEG image, including the width, height, subsampling type, entropy
    coding type, etc. in parameters rather than returning that
    information in its arguments.
  * TJ*FLAG_LIMITSCANS has been reimplemented as an integer parameter
    (TJ*PARAM_SCANLIMIT) that allows the number of scans to be
    specified.

- Use the const keyword for all pointer arguments to unmodified
  buffers, as well as for both dimensions of 2D pointers.  Addresses
  #395.

- Use size_t rather than unsigned long to represent buffer sizes, since
  unsigned long is a 32-bit type on Windows.  Addresses #24.

- Return 0 from all buffer size functions if an error occurs, rather
  than awkwardly trying to return -1 in an unsigned data type.

- Implement 12-bit and 16-bit data precision using dedicated
  compression, decompression, and image I/O functions/methods.
  * Suffix the names of all data-precision-specific functions with 8,
    12, or 16.
  * Because the YUV functions are intended to be used for video, they
    are currently only implemented with 8-bit data precision, but they
    can be expanded to 12-bit data precision in the future, if
    necessary.
  * Extend TJUnitTest and TJBench to test 12-bit and 16-bit data
    precision, using a new -precision option.
  * Add appropriate regression tests for all of the above to the 'test'
    target.
  * Extend tjbenchtest to test 12-bit and 16-bit data precision, and
    add separate 'tjtest12' and 'tjtest16' targets.
  * BufferedImage I/O in the Java API is currently limited to 8-bit
    data precision, since the BufferedImage class does not
    straightforwardly support higher data precisions.
  * Extend the PPM reader to convert 12-bit and 16-bit PBMPLUS files
    to grayscale or CMYK pixels, as it already does for 8-bit files.

- Properly accommodate lossless JPEG using dedicated parameters
  (TJ*PARAM_LOSSLESS, TJ*PARAM_LOSSLESSPSV, and TJ*PARAM_LOSSLESSPT),
  rather than using a flag and awkwardly repurposing the JPEG quality.
  Update TJBench to properly reflect whether a JPEG image is lossless.

- Re-organize the TJBench usage screen.

- Update the Java docs using Java 11, to improve the formatting and
  eliminate HTML frames.

- Use the accurate integer DCT algorithm by default for both
  compression and decompression, since the "fast" algorithm is a legacy
  feature, it does not pass the ISO compliance tests, and it is not
  actually faster on modern x86 CPUs.
  * Remove the -accuratedct option from TJBench and TJExample.

- Re-implement the 'tjtest' target using a CMake script that enables
  the appropriate tests, depending on the data precision and whether or
  not the Java API is part of the build.

- Consolidate the C and Java versions of tjbenchtest into one script.

- Consolidate the C and Java versions of tjexampletest into one script.

- Combine all initialization functions into a single function
  (tj3Init()) that accepts an integer parameter specifying the
  subsystems to initialize.

- Enable decompression scaling explicitly, using a new function/method
  (tj3SetScalingFactor()/TJDecompressor.setScalingFactor()), rather
  than implicitly using awkward "desired width"/"desired height"
  parameters.

- Introduce a new macro/constant (TJUNSCALED/TJ.UNSCALED) that maps to
  a scaling factor of 1/1.

- Implement partial image decompression, using a new function/method
  (tj3SetCroppingRegion()/TJDecompressor.setCroppingRegion()) and
  TJBench option (-crop).  Extend tjbenchtest to test the new feature.
  Addresses #1.

- Allow the JPEG colorspace to be specified explicitly when
  compressing, using a new parameter (TJ*PARAM_COLORSPACE).  This
  allows JPEG images with the RGB and CMYK colorspaces to be created.

- Remove the error/difference image feature from TJBench.  Identical
  images to the ones that TJBench created can be generated using
  ImageMagick with
  'magick composite <original_image> <output_image> -compose difference <diff_image>'

- Handle JPEG images with unknown subsampling types.  TJ*PARAM_SUBSAMP
  is set to TJ*SAMP_UNKNOWN (== -1) for such images, but they can still
  be decompressed fully into packed-pixel images or losslessly
  transformed (with the exception of lossless cropping.)  They cannot
  be partially decompressed or decompressed into planar YUV images.
  Note also that TJBench, due to its lack of support for imperfect
  transforms, requires that the subsampling type be known when
  rotating, flipping, or transversely transposing an image.  Addresses
  #436

- The Java version of TJBench now has identical functionality to the C
  version.  This was accomplished by (somewhat hackishly) calling the
  TurboJPEG C image I/O functions through JNI and copying the pixels
  between the C heap and the Java heap.

- Add parameters (TJ*PARAM_RESTARTROWS and TJ*PARAM_RESTARTBLOCKS) and
  a TJBench option (-restart) to allow the restart marker interval to
  be specified when compressing.  Eliminate the undocumented TJ_RESTART
  environment variable.

- Add a parameter (TJ*PARAM_OPTIMIZE), a transform option
  (TJ*OPT_OPTIMIZE), and a TJBench option (-optimize) to allow
  optimized baseline Huffman coding to be specified when compressing.
  Eliminate the undocumented TJ_OPTIMIZE environment variable.

- Add parameters (TJ*PARAM_XDENSITY, TJ*PARAM_DENSITY, and
  TJ*DENSITYUNITS) to allow the pixel density to be specified when
  compressing or saving a Windows BMP image and to be queried when
  decompressing or loading a Windows BMP image.  Addresses #77.

- Refactor the fuzz targets to use the new API.
  * Extend decompression coverage to 12-bit and 16-bit data precision.
  * Replace the awkward cjpeg12 and cjpeg16 targets with proper
    TurboJPEG-based compress12, compress12-lossless, and
    compress16-lossless targets

- Fix innocuous UBSan warnings uncovered by the new fuzzers.

- Implement previous versions of the TurboJPEG API by wrapping the new
  functions (tested by running the 2.1.x versions of TJBench, via
  tjbenchtest, and TJUnitTest against the new implementation.)
  * Remove all JNI functions for deprecated Java methods and implement
    the deprecated methods using pure Java wrappers.  It should be
    understood that backward API compatibility in Java applies only to
    the Java classes and that one cannot mix and match a JAR file from
    one version of libjpeg-turbo with a JNI library from another
    version.

- tj3Destroy() now silently accepts a NULL handle.

- tj3Alloc() and tj3Free() now return/accept void pointers, as malloc()
  and free() do.

- The image I/O functions now accept a TurboJPEG instance handle, which
  is used to transmit/receive parameters and to receive error
  information.

Closes #517
This commit is contained in:
DRC
2023-01-05 06:36:46 -06:00
parent 1a1ea4eeba
commit fc01f4673b
132 changed files with 41404 additions and 10163 deletions

View File

@@ -342,7 +342,8 @@ set(TURBOJPEG_SO_MAJOR_VERSION 0)
# function so that it accepts "abbreviated table specification" (AKA # function so that it accepts "abbreviated table specification" (AKA
# "tables-only") datastreams as well as JPEG images, but that did not affect # "tables-only") datastreams as well as JPEG images, but that did not affect
# forward API/ABI compatibility. # forward API/ABI compatibility.
set(TURBOJPEG_SO_AGE 2) # 3: TurboJPEG 3 API
set(TURBOJPEG_SO_AGE 3)
set(TURBOJPEG_SO_VERSION 0.${TURBOJPEG_SO_AGE}.0) set(TURBOJPEG_SO_VERSION 0.${TURBOJPEG_SO_AGE}.0)
@@ -608,6 +609,12 @@ if(ENABLE_STATIC)
endif() endif()
if(WITH_TURBOJPEG) if(WITH_TURBOJPEG)
add_library(turbojpeg12 OBJECT rdppm.c wrppm.c)
set_property(TARGET turbojpeg12 PROPERTY COMPILE_FLAGS
"-DBITS_IN_JSAMPLE=12 -DPPM_SUPPORTED")
add_library(turbojpeg16 OBJECT rdppm.c wrppm.c)
set_property(TARGET turbojpeg16 PROPERTY COMPILE_FLAGS
"-DBITS_IN_JSAMPLE=16 -DPPM_SUPPORTED")
if(ENABLE_SHARED) if(ENABLE_SHARED)
set(TURBOJPEG_SOURCES ${JPEG_SOURCES} ${SIMD_TARGET_OBJECTS} ${SIMD_OBJS} set(TURBOJPEG_SOURCES ${JPEG_SOURCES} ${SIMD_TARGET_OBJECTS} ${SIMD_OBJS}
turbojpeg.c transupp.c jdatadst-tj.c jdatasrc-tj.c rdbmp.c rdppm.c turbojpeg.c transupp.c jdatadst-tj.c jdatasrc-tj.c rdbmp.c rdppm.c
@@ -624,7 +631,8 @@ if(WITH_TURBOJPEG)
set(TURBOJPEG_SOURCES ${TURBOJPEG_SOURCES} set(TURBOJPEG_SOURCES ${TURBOJPEG_SOURCES}
${CMAKE_BINARY_DIR}/win/turbojpeg.rc) ${CMAKE_BINARY_DIR}/win/turbojpeg.rc)
endif() endif()
add_library(turbojpeg SHARED ${TURBOJPEG_SOURCES}) add_library(turbojpeg SHARED ${TURBOJPEG_SOURCES}
$<TARGET_OBJECTS:turbojpeg12> $<TARGET_OBJECTS:turbojpeg16>)
set_property(TARGET turbojpeg PROPERTY COMPILE_FLAGS set_property(TARGET turbojpeg PROPERTY COMPILE_FLAGS
"-DBMP_SUPPORTED -DPPM_SUPPORTED") "-DBMP_SUPPORTED -DPPM_SUPPORTED")
if(WIN32) if(WIN32)
@@ -664,7 +672,8 @@ if(WITH_TURBOJPEG)
add_library(turbojpeg-static STATIC ${JPEG_SOURCES} ${SIMD_TARGET_OBJECTS} add_library(turbojpeg-static STATIC ${JPEG_SOURCES} ${SIMD_TARGET_OBJECTS}
${SIMD_OBJS} turbojpeg.c transupp.c jdatadst-tj.c jdatasrc-tj.c rdbmp.c ${SIMD_OBJS} turbojpeg.c transupp.c jdatadst-tj.c jdatasrc-tj.c rdbmp.c
rdppm.c wrbmp.c wrppm.c $<TARGET_OBJECTS:jpeg12> rdppm.c wrbmp.c wrppm.c $<TARGET_OBJECTS:jpeg12>
$<TARGET_OBJECTS:jpeg16>) $<TARGET_OBJECTS:jpeg16> $<TARGET_OBJECTS:turbojpeg12>
$<TARGET_OBJECTS:turbojpeg16>)
set_property(TARGET turbojpeg-static PROPERTY COMPILE_FLAGS set_property(TARGET turbojpeg-static PROPERTY COMPILE_FLAGS
"-DBMP_SUPPORTED -DPPM_SUPPORTED") "-DBMP_SUPPORTED -DPPM_SUPPORTED")
if(NOT MSVC) if(NOT MSVC)
@@ -786,6 +795,18 @@ if(WITH_JAVA)
${Java_JAVA_EXECUTABLE} ${JAVAARGS} -cp java/turbojpeg.jar ${Java_JAVA_EXECUTABLE} ${JAVAARGS} -cp java/turbojpeg.jar
-Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
TJUnitTest -bi -lossless) TJUnitTest -bi -lossless)
add_test(TJUnitTest12
${Java_JAVA_EXECUTABLE} ${JAVAARGS} -cp java/turbojpeg.jar
-Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
TJUnitTest -precision 12)
add_test(TJUnitTest12-lossless
${Java_JAVA_EXECUTABLE} ${JAVAARGS} -cp java/turbojpeg.jar
-Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
TJUnitTest -precision 12 -lossless)
add_test(TJUnitTest16-lossless
${Java_JAVA_EXECUTABLE} ${JAVAARGS} -cp java/turbojpeg.jar
-Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR}
TJUnitTest -precision 16)
endif() endif()
set(TEST_LIBTYPES "") set(TEST_LIBTYPES "")
@@ -917,83 +938,137 @@ foreach(libtype ${TEST_LIBTYPES})
${CMAKE_CROSSCOMPILING_EMULATOR} tjunittest${suffix} -lossless -alloc) ${CMAKE_CROSSCOMPILING_EMULATOR} tjunittest${suffix} -lossless -alloc)
add_test(tjunittest-${libtype}-bmp add_test(tjunittest-${libtype}-bmp
${CMAKE_CROSSCOMPILING_EMULATOR} tjunittest${suffix} -bmp) ${CMAKE_CROSSCOMPILING_EMULATOR} tjunittest${suffix} -bmp)
add_test(tjunittest12-${libtype}
${CMAKE_CROSSCOMPILING_EMULATOR} tjunittest${suffix} -precision 12)
add_test(tjunittest12-${libtype}-alloc
${CMAKE_CROSSCOMPILING_EMULATOR} tjunittest${suffix} -precision 12
-alloc)
add_test(tjunittest12-${libtype}-lossless
${CMAKE_CROSSCOMPILING_EMULATOR} tjunittest${suffix} -precision 12
-lossless)
add_test(tjunittest12-${libtype}-lossless-alloc
${CMAKE_CROSSCOMPILING_EMULATOR} tjunittest${suffix} -precision 12
-lossless -alloc)
add_test(tjunittest12-${libtype}-bmp
${CMAKE_CROSSCOMPILING_EMULATOR} tjunittest${suffix} -precision 12 -bmp)
add_test(tjunittest16-${libtype}-lossless
${CMAKE_CROSSCOMPILING_EMULATOR} tjunittest${suffix} -precision 16)
add_test(tjunittest16-${libtype}-lossless-alloc
${CMAKE_CROSSCOMPILING_EMULATOR} tjunittest${suffix} -precision 16
-alloc)
add_test(tjunittest16-${libtype}-bmp
${CMAKE_CROSSCOMPILING_EMULATOR} tjunittest${suffix} -precision 16 -bmp)
set(MD5_PPM_GRAY_TILE 89d3ca21213d9d864b50b4e4e7de4ca6) foreach(sample_bits 8 12)
set(MD5_PPM_420_8x8_TILE 847fceab15c5b7b911cb986cf0f71de3)
set(MD5_PPM_420_16x16_TILE ca45552a93687e078f7137cc4126a7b0)
set(MD5_PPM_420_32x32_TILE d8676f1d6b68df358353bba9844f4a00)
set(MD5_PPM_420_64x64_TILE 4e4c1a3d7ea4bace4f868bcbe83b7050)
set(MD5_PPM_420_128x128_TILE f24c3429c52265832beab9df72a0ceae)
set(MD5_PPM_420M_8x8_TILE bc25320e1f4c31ce2e610e43e9fd173c)
set(MD5_PPM_420M_TILE 75ffdf14602258c5c189522af57fa605)
set(MD5_PPM_422_8x8_TILE d83dacd9fc73b0a6f10c09acad64eb1e)
set(MD5_PPM_422_16x16_TILE 35077fb610d72dd743b1eb0cbcfe10fb)
set(MD5_PPM_422_32x32_TILE e6902ed8a449ecc0f0d6f2bf945f65f7)
set(MD5_PPM_422_64x64_TILE 2b4502a8f316cedbde1da7bce3d2231e)
set(MD5_PPM_422_128x128_TILE f0b5617d578f5e13c8eee215d64d4877)
set(MD5_PPM_422M_8x8_TILE 828941d7f41cd6283abd6beffb7fd51d)
set(MD5_PPM_422M_TILE e877ae1324c4a280b95376f7f018172f)
set(MD5_PPM_444_TILE 7964e41e67cfb8d0a587c0aa4798f9c3)
# Test compressing from/decompressing to an arbitrary subregion of a larger if(sample_bits EQUAL 12)
# image buffer set(tjbench tjbench12)
add_test(tjbench-${libtype}-tile-cp set(testout testout12)
${CMAKE_COMMAND} -E copy_if_different ${TESTIMAGES}/testorig.ppm
testout_tile.ppm)
add_test(tjbench-${libtype}-tile
${CMAKE_CROSSCOMPILING_EMULATOR} tjbench${suffix} testout_tile.ppm 95
-rgb -quiet -tile -benchtime 0.01 -warmup 0)
set_tests_properties(tjbench-${libtype}-tile
PROPERTIES DEPENDS tjbench-${libtype}-tile-cp)
foreach(tile 8 16 32 64 128) set(MD5_PPM_GRAY_TILE 2f799249148b1a9d0e61fa4408f6c397)
add_test(tjbench-${libtype}-tile-gray-${tile}x${tile}-cmp set(MD5_PPM_420_8x8_TILE b25684e1af37be504ee3fd137757353f)
${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP} ${MD5_PPM_GRAY_TILE} set(MD5_PPM_420_16x16_TILE 2c1af444a63d19167eb3f4c1fa7f1b67)
testout_tile_GRAY_Q95_${tile}x${tile}.ppm) set(MD5_PPM_420_32x32_TILE cce091fe18688f39bc0b5ba29238e1e2)
foreach(subsamp 420 422) set(MD5_PPM_420_64x64_TILE f770ec8f710a014606dee662bc88606d)
add_test(tjbench-${libtype}-tile-${subsamp}-${tile}x${tile}-cmp set(MD5_PPM_420_128x128_TILE a841bc82e9eda34cbdefe53f808b339c)
${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP} set(MD5_PPM_420M_8x8_TILE 9de845a8d805affb9ae3a7b2712eaa46)
${MD5_PPM_${subsamp}_${tile}x${tile}_TILE} set(MD5_PPM_420M_TILE 455d273be0e229b9c8aabb16481bce5b)
testout_tile_${subsamp}_Q95_${tile}x${tile}.ppm) set(MD5_PPM_422_8x8_TILE 5e9f784a98a7eae2789ea1458ed43748)
set(MD5_PPM_422_16x16_TILE c8df65a792d371a30c8fb7352f320314)
set(MD5_PPM_422_32x32_TILE b523b630237e3305a5c4d353ff4ee19b)
set(MD5_PPM_422_64x64_TILE eb30bdd20337079745b039e24e613bfd)
set(MD5_PPM_422_128x128_TILE 7997458635973b004da46863e2da55ea)
set(MD5_PPM_422M_8x8_TILE f8443fffd32cce7681dd36010ce43c07)
set(MD5_PPM_422M_TILE a0d45368343a63ca2c8ee87cc4ef9ded)
set(MD5_PPM_444_TILE 2f571a032e4dbc8ef40f75219d336b0b)
else()
set(tjbench tjbench)
set(testout testout)
set(MD5_PPM_GRAY_TILE 2c3b567086e6ca0c5e6d34ad8d6f6fe8)
set(MD5_PPM_420_8x8_TILE efca1bdf0226df01777137778cf986ec)
set(MD5_PPM_420_16x16_TILE 8c92c7453870d9e11c6d1dec3a8c9101)
set(MD5_PPM_420_32x32_TILE 3f7651872a95e469d1c7115f1b11ecef)
set(MD5_PPM_420_64x64_TILE f64c71af03fdea12363b62f1a3096aab)
set(MD5_PPM_420_128x128_TILE 5a5ef57517558c671bf5e75793588d69)
set(MD5_PPM_420M_8x8_TILE 66bd869b315a32a00fef1a025661ce72)
set(MD5_PPM_420M_TILE bf9ec2ab4875abb2efcce8f876fe2c2a)
set(MD5_PPM_422_8x8_TILE c300553ce1b3b90fd414ec96b62fe988)
set(MD5_PPM_422_16x16_TILE 6559ddb1191f5b2d3eb41081b254c4e0)
set(MD5_PPM_422_32x32_TILE 58691797f4584c4c5ed5965a6bb9aec0)
set(MD5_PPM_422_64x64_TILE 7f9e34942ae46af7b784f459ec133f5e)
set(MD5_PPM_422_128x128_TILE 6afcb77580d85dd3eacb04b3c2bc7710)
set(MD5_PPM_422M_8x8_TILE 55df1f96bcfb631aedeb940cf3f011f5)
set(MD5_PPM_422M_TILE 6502031018c2d2f69bc6353347f8df4d)
set(MD5_PPM_444_TILE 87bd58005eec73f0f313c8e38d0d793c)
endif()
# Test compressing from/decompressing to an arbitrary subregion of a larger
# image buffer
add_test(${tjbench}-${libtype}-tile-cp
${CMAKE_COMMAND} -E copy_if_different ${TESTIMAGES}/testorig.ppm
${testout}_tile.ppm)
add_test(${tjbench}-${libtype}-tile
${CMAKE_CROSSCOMPILING_EMULATOR} tjbench${suffix} ${testout}_tile.ppm
95 -precision ${sample_bits} -rgb -quiet -tile -benchtime 0.01
-warmup 0)
set_tests_properties(${tjbench}-${libtype}-tile
PROPERTIES DEPENDS ${tjbench}-${libtype}-tile-cp)
foreach(tile 8 16 32 64 128)
add_test(${tjbench}-${libtype}-tile-gray-${tile}x${tile}-cmp
${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP} ${MD5_PPM_GRAY_TILE}
${testout}_tile_GRAY_Q95_${tile}x${tile}.ppm)
foreach(subsamp 420 422)
add_test(${tjbench}-${libtype}-tile-${subsamp}-${tile}x${tile}-cmp
${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP}
${MD5_PPM_${subsamp}_${tile}x${tile}_TILE}
${testout}_tile_${subsamp}_Q95_${tile}x${tile}.ppm)
endforeach()
add_test(${tjbench}-${libtype}-tile-444-${tile}x${tile}-cmp
${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP} ${MD5_PPM_444_TILE}
${testout}_tile_444_Q95_${tile}x${tile}.ppm)
foreach(subsamp gray 420 422 444)
set_tests_properties(
${tjbench}-${libtype}-tile-${subsamp}-${tile}x${tile}-cmp
PROPERTIES DEPENDS ${tjbench}-${libtype}-tile)
endforeach()
endforeach() endforeach()
add_test(tjbench-${libtype}-tile-444-${tile}x${tile}-cmp
${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP} ${MD5_PPM_444_TILE} add_test(${tjbench}-${libtype}-tilem-cp
testout_tile_444_Q95_${tile}x${tile}.ppm) ${CMAKE_COMMAND} -E copy_if_different ${TESTIMAGES}/testorig.ppm
foreach(subsamp gray 420 422 444) ${testout}_tilem.ppm)
set_tests_properties(tjbench-${libtype}-tile-${subsamp}-${tile}x${tile}-cmp add_test(${tjbench}-${libtype}-tilem
PROPERTIES DEPENDS tjbench-${libtype}-tile) ${CMAKE_CROSSCOMPILING_EMULATOR} tjbench${suffix} ${testout}_tilem.ppm
95 -precision ${sample_bits} -rgb -fastupsample -quiet -tile
-benchtime 0.01 -warmup 0)
set_tests_properties(${tjbench}-${libtype}-tilem
PROPERTIES DEPENDS ${tjbench}-${libtype}-tilem-cp)
add_test(${tjbench}-${libtype}-tile-420m-8x8-cmp
${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP} ${MD5_PPM_420M_8x8_TILE}
${testout}_tilem_420_Q95_8x8.ppm)
add_test(${tjbench}-${libtype}-tile-422m-8x8-cmp
${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP} ${MD5_PPM_422M_8x8_TILE}
${testout}_tilem_422_Q95_8x8.ppm)
foreach(tile 16 32 64 128)
foreach(subsamp 420 422)
add_test(${tjbench}-${libtype}-tile-${subsamp}m-${tile}x${tile}-cmp
${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP}
${MD5_PPM_${subsamp}M_TILE}
${testout}_tilem_${subsamp}_Q95_${tile}x${tile}.ppm)
endforeach()
endforeach() endforeach()
foreach(tile 8 16 32 64 128)
foreach(subsamp 420 422)
set_tests_properties(
${tjbench}-${libtype}-tile-${subsamp}m-${tile}x${tile}-cmp
PROPERTIES DEPENDS ${tjbench}-${libtype}-tilem)
endforeach()
endforeach()
endforeach() endforeach()
add_test(tjbench-${libtype}-tilem-cp
${CMAKE_COMMAND} -E copy_if_different ${TESTIMAGES}/testorig.ppm
testout_tilem.ppm)
add_test(tjbench-${libtype}-tilem
${CMAKE_CROSSCOMPILING_EMULATOR} tjbench${suffix} testout_tilem.ppm 95
-rgb -fastupsample -quiet -tile -benchtime 0.01 -warmup 0)
set_tests_properties(tjbench-${libtype}-tilem
PROPERTIES DEPENDS tjbench-${libtype}-tilem-cp)
add_test(tjbench-${libtype}-tile-420m-8x8-cmp
${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP} ${MD5_PPM_420M_8x8_TILE}
testout_tilem_420_Q95_8x8.ppm)
add_test(tjbench-${libtype}-tile-422m-8x8-cmp
${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP} ${MD5_PPM_422M_8x8_TILE}
testout_tilem_422_Q95_8x8.ppm)
foreach(tile 16 32 64 128)
foreach(subsamp 420 422)
add_test(tjbench-${libtype}-tile-${subsamp}m-${tile}x${tile}-cmp
${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP}
${MD5_PPM_${subsamp}M_TILE}
testout_tilem_${subsamp}_Q95_${tile}x${tile}.ppm)
endforeach()
endforeach()
foreach(tile 8 16 32 64 128)
foreach(subsamp 420 422)
set_tests_properties(tjbench-${libtype}-tile-${subsamp}m-${tile}x${tile}-cmp
PROPERTIES DEPENDS tjbench-${libtype}-tilem)
endforeach()
endforeach()
endif() endif()
# These tests are carefully crafted to provide full coverage of as many of # These tests are carefully crafted to provide full coverage of as many of
@@ -1540,81 +1615,21 @@ if(WITH_TURBOJPEG)
if(WIN32) if(WIN32)
set(BASH bash) set(BASH bash)
endif() endif()
if(WITH_JAVA) add_custom_target(tjtest COMMAND ${CMAKE_COMMAND} -DWITH_JAVA=${WITH_JAVA}
configure_file(tjbenchtest.java.in tjbenchtest.java @ONLY) -DPRECISION=8 -P ${CMAKE_SOURCE_DIR}/cmakescripts/tjbenchtest.cmake
configure_file(tjexampletest.java.in tjexampletest.java @ONLY) DEPENDS ${CMAKE_SOURCE_DIR}/cmakescripts/tjbenchtest.cmake
add_custom_target(tjtest ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest
COMMAND echo tjbenchtest ${CMAKE_CURRENT_BINARY_DIR}/tjexampletest)
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest add_custom_target(tjtest12 COMMAND ${CMAKE_COMMAND} -DWITH_JAVA=${WITH_JAVA}
COMMAND echo tjbenchtest -alloc -DPRECISION=12 -P ${CMAKE_SOURCE_DIR}/cmakescripts/tjbenchtest.cmake
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -alloc DEPENDS ${CMAKE_SOURCE_DIR}/cmakescripts/tjbenchtest.cmake
COMMAND echo tjbenchtest -yuv ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -yuv ${CMAKE_CURRENT_BINARY_DIR}/tjexampletest)
COMMAND echo tjbenchtest -yuv -alloc add_custom_target(tjtest16 COMMAND ${CMAKE_COMMAND} -DWITH_JAVA=${WITH_JAVA}
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -yuv -alloc -DPRECISION=16 -P ${CMAKE_SOURCE_DIR}/cmakescripts/tjbenchtest.cmake
COMMAND echo tjbenchtest -progressive DEPENDS ${CMAKE_SOURCE_DIR}/cmakescripts/tjbenchtest.cmake
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -progressive ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest
COMMAND echo tjbenchtest -progressive -yuv ${CMAKE_CURRENT_BINARY_DIR}/tjexampletest)
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -progressive -yuv
COMMAND echo tjbenchtest -arithmetic
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -arithmetic
COMMAND echo tjbenchtest -arithmetic -yuv
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -arithmetic -yuv
COMMAND echo tjbenchtest -lossless
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -lossless
COMMAND echo tjbenchtest -lossless -alloc
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -lossless -alloc
COMMAND echo tjexampletest
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjexampletest
COMMAND echo tjbenchtest.java
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest.java
COMMAND echo tjbenchtest.java -yuv
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest.java -yuv
COMMAND echo tjbenchtest.java -progressive
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest.java -progressive
COMMAND echo tjbenchtest.java -progressive -yuv
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest.java
-progressive -yuv
COMMAND echo tjbenchtest.java -arithmetic
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest.java -arithmetic
COMMAND echo tjbenchtest.java -arithmetic -yuv
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest.java -arithmetic
-yuv
COMMAND echo tjbenchtest.java -lossless
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest.java -lossless
COMMAND echo tjexampletest.java
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjexampletest.java
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest
${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest.java
${CMAKE_CURRENT_BINARY_DIR}/tjexampletest
${CMAKE_CURRENT_BINARY_DIR}/tjexampletest.java)
else()
add_custom_target(tjtest
COMMAND echo tjbenchtest
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest
COMMAND echo tjbenchtest -alloc
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -alloc
COMMAND echo tjbenchtest -yuv
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -yuv
COMMAND echo tjbenchtest -yuv -alloc
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -yuv -alloc
COMMAND echo tjbenchtest -progressive
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -progressive
COMMAND echo tjbenchtest -progressive -yuv
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -progressive -yuv
COMMAND echo tjbenchtest -arithmetic
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -arithmetic
COMMAND echo tjbenchtest -arithmetic -yuv
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -arithmetic -yuv
COMMAND echo tjbenchtest -lossless
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -lossless
COMMAND echo tjbenchtest -lossless -alloc
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -lossless -alloc
COMMAND echo tjexampletest
COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjexampletest
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest
${CMAKE_CURRENT_BINARY_DIR}/tjexampletest)
endif()
endif() endif()

View File

@@ -30,6 +30,9 @@ file(GLOB FILES
*_411_*.ppm *_411_*.ppm
*_411_*.jpg *_411_*.jpg
*_411.yuv *_411.yuv
*_LOSSL*S_*.bmp
*_LOSSL*S_*.ppm
*_LOSSL*S_*.jpg
tjbenchtest*.log tjbenchtest*.log
tjexampletest*.log) tjexampletest*.log)

View File

@@ -0,0 +1,67 @@
if(NOT DEFINED PRECISION)
message(FATAL_ERROR "PRECISION must be specified")
endif()
if(NOT DEFINED WITH_JAVA)
message(FATAL_ERROR "WITH_JAVA must be specified")
endif()
macro(check_error program)
if(NOT RESULT EQUAL 0)
message(FATAL_ERROR "${program} failed.")
endif()
endmacro()
macro(run_test PROG ARGS)
string(REPLACE ";" " " SPACED_ARGS "${ARGS}")
message(STATUS "${PROG} ${SPACED_ARGS}")
execute_process(COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${PROG} ${ARGS}
RESULT_VARIABLE RESULT)
check_error("${PROG} ${SPACED_ARGS}")
endmacro()
if(NOT PRECISION EQUAL 16)
run_test(tjbenchtest "-precision;${PRECISION}")
run_test(tjbenchtest "-precision;${PRECISION};-alloc")
endif()
if(PRECISION EQUAL 8)
run_test(tjbenchtest "-precision;${PRECISION};-yuv")
run_test(tjbenchtest "-precision;${PRECISION};-yuv;-alloc")
run_test(tjbenchtest "-precision;${PRECISION};-optimize")
run_test(tjbenchtest "-precision;${PRECISION};-optimize;-yuv")
endif()
if(NOT PRECISION EQUAL 16)
run_test(tjbenchtest "-precision;${PRECISION};-progressive")
endif()
if(PRECISION EQUAL 8)
run_test(tjbenchtest "-precision;${PRECISION};-progressive;-yuv")
run_test(tjbenchtest "-precision;${PRECISION};-arithmetic")
run_test(tjbenchtest "-precision;${PRECISION};-arithmetic;-yuv")
endif()
run_test(tjbenchtest "-precision;${PRECISION};-lossless")
run_test(tjbenchtest "-precision;${PRECISION};-lossless;-alloc")
if(PRECISION EQUAL 8)
run_test(tjexampletest "")
endif()
if(WITH_JAVA)
if(NOT PRECISION EQUAL 16)
run_test(tjbenchtest "-java;-precision;${PRECISION}")
endif()
if(PRECISION EQUAL 8)
run_test(tjbenchtest "-java;-precision;${PRECISION};-yuv")
run_test(tjbenchtest "-java;-precision;${PRECISION};-optimize")
run_test(tjbenchtest "-java;-precision;${PRECISION};-optimize;-yuv")
endif()
if(NOT PRECISION EQUAL 16)
run_test(tjbenchtest "-java;-precision;${PRECISION};-progressive")
endif()
if(PRECISION EQUAL 8)
run_test(tjbenchtest "-java;-precision;${PRECISION};-progressive;-yuv")
run_test(tjbenchtest "-java;-precision;${PRECISION};-arithmetic")
run_test(tjbenchtest "-java;-precision;${PRECISION};-arithmetic;-yuv")
endif()
run_test(tjbenchtest "-java;-precision;${PRECISION};-lossless")
if(PRECISION EQUAL 8)
run_test(tjexampletest "-java")
endif()
endif()

View File

@@ -23,7 +23,7 @@
<tr style="height: 56px;"> <tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">TurboJPEG <div id="projectname">TurboJPEG
&#160;<span id="projectnumber">2.2</span> &#160;<span id="projectnumber">3</span>
</div> </div>
</td> </td>
</tr> </tr>

View File

@@ -23,7 +23,7 @@
<tr style="height: 56px;"> <tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">TurboJPEG <div id="projectname">TurboJPEG
&#160;<span id="projectnumber">2.2</span> &#160;<span id="projectnumber">3</span>
</div> </div>
</td> </td>
</tr> </tr>

View File

@@ -23,7 +23,7 @@
<tr style="height: 56px;"> <tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">TurboJPEG <div id="projectname">TurboJPEG
&#160;<span id="projectnumber">2.2</span> &#160;<span id="projectnumber">3</span>
</div> </div>
</td> </td>
</tr> </tr>

View File

@@ -23,7 +23,7 @@
<tr style="height: 56px;"> <tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">TurboJPEG <div id="projectname">TurboJPEG
&#160;<span id="projectnumber">2.2</span> &#160;<span id="projectnumber">3</span>
</div> </div>
</td> </td>
</tr> </tr>

File diff suppressed because it is too large Load Diff

View File

@@ -23,7 +23,7 @@
<tr style="height: 56px;"> <tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">TurboJPEG <div id="projectname">TurboJPEG
&#160;<span id="projectnumber">2.2</span> &#160;<span id="projectnumber">3</span>
</div> </div>
</td> </td>
</tr> </tr>

View File

@@ -23,7 +23,7 @@
<tr style="height: 56px;"> <tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">TurboJPEG <div id="projectname">TurboJPEG
&#160;<span id="projectnumber">2.2</span> &#160;<span id="projectnumber">3</span>
</div> </div>
</td> </td>
</tr> </tr>

View File

@@ -1,106 +1,140 @@
var searchData= var searchData=
[ [
['tj_5fnumcs_8',['TJ_NUMCS',['../group___turbo_j_p_e_g.html#ga39f57a6fb02d9cf32e7b6890099b5a71',1,'turbojpeg.h']]], ['tj3alloc_8',['tj3Alloc',['../group___turbo_j_p_e_g.html#gab40a0b231122f536e503e3394569a68d',1,'turbojpeg.h']]],
['tj_5fnumerr_9',['TJ_NUMERR',['../group___turbo_j_p_e_g.html#ga79bde1b4a3e2351e00887e47781b966e',1,'turbojpeg.h']]], ['tj3compress12_9',['tj3Compress12',['../group___turbo_j_p_e_g.html#ga9a1968c384ec7abb6122830253ebf570',1,'turbojpeg.h']]],
['tj_5fnumpf_10',['TJ_NUMPF',['../group___turbo_j_p_e_g.html#ga7010a4402f54a45ba822ad8675a4655e',1,'turbojpeg.h']]], ['tj3compress16_10',['tj3Compress16',['../group___turbo_j_p_e_g.html#ga77901b71d0471784f318ada31ff4e7bd',1,'turbojpeg.h']]],
['tj_5fnumsamp_11',['TJ_NUMSAMP',['../group___turbo_j_p_e_g.html#ga5ef3d169162ce77ce348e292a0b7477c',1,'turbojpeg.h']]], ['tj3compress8_11',['tj3Compress8',['../group___turbo_j_p_e_g.html#ga2cc418a2dab709ad7f30f5b25905f138',1,'turbojpeg.h']]],
['tj_5fnumxop_12',['TJ_NUMXOP',['../group___turbo_j_p_e_g.html#ga0f6dbd18adf38b7d46ac547f0f4d562c',1,'turbojpeg.h']]], ['tj3compressfromyuv8_12',['tj3CompressFromYUV8',['../group___turbo_j_p_e_g.html#ga041c870d9c669eb3f385c78f4346c43f',1,'turbojpeg.h']]],
['tjalloc_13',['tjAlloc',['../group___turbo_j_p_e_g.html#gaec627dd4c5f30b7a775a7aea3bec5d83',1,'turbojpeg.h']]], ['tj3compressfromyuvplanes8_13',['tj3CompressFromYUVPlanes8',['../group___turbo_j_p_e_g.html#gac9f5ace3e73805b476c95dda9f8d0cd0',1,'turbojpeg.h']]],
['tjalphaoffset_14',['tjAlphaOffset',['../group___turbo_j_p_e_g.html#ga5af0ab065feefd526debf1e20c43e837',1,'turbojpeg.h']]], ['tj3decodeyuv8_14',['tj3DecodeYUV8',['../group___turbo_j_p_e_g.html#gaa1eb574f38b1c1de43a6c7aafcf68d8c',1,'turbojpeg.h']]],
['tjblueoffset_15',['tjBlueOffset',['../group___turbo_j_p_e_g.html#ga84e2e35d3f08025f976ec1ec53693dea',1,'turbojpeg.h']]], ['tj3decodeyuvplanes8_15',['tj3DecodeYUVPlanes8',['../group___turbo_j_p_e_g.html#gad366f1915f82c1ad4e7e37ebe073ca89',1,'turbojpeg.h']]],
['tjbufsize_16',['tjBufSize',['../group___turbo_j_p_e_g.html#ga67ac12fee79073242cb216e07c9f1f90',1,'turbojpeg.h']]], ['tj3decompress12_16',['tj3Decompress12',['../group___turbo_j_p_e_g.html#ga39b848f01781ad74a5b3941c012b6199',1,'turbojpeg.h']]],
['tjbufsizeyuv2_17',['tjBufSizeYUV2',['../group___turbo_j_p_e_g.html#ga5e5aac9e8bcf17049279301e2466474c',1,'turbojpeg.h']]], ['tj3decompress16_17',['tj3Decompress16',['../group___turbo_j_p_e_g.html#gaa074e63f9beb0b3ff42b833a4049df6e',1,'turbojpeg.h']]],
['tjcompress2_18',['tjCompress2',['../group___turbo_j_p_e_g.html#gafbdce0112fd78fd38efae841443a9bcf',1,'turbojpeg.h']]], ['tj3decompress8_18',['tj3Decompress8',['../group___turbo_j_p_e_g.html#ga1169c7c1a26ec18c9e6122cb8ae64013',1,'turbojpeg.h']]],
['tjcompressfromyuv_19',['tjCompressFromYUV',['../group___turbo_j_p_e_g.html#gab40f5096a72fd7e5bda9d6b58fa37e2e',1,'turbojpeg.h']]], ['tj3decompressheader_19',['tj3DecompressHeader',['../group___turbo_j_p_e_g.html#ga96d2c4b3432f9d88ad14758ae240b8d1',1,'turbojpeg.h']]],
['tjcompressfromyuvplanes_20',['tjCompressFromYUVPlanes',['../group___turbo_j_p_e_g.html#ga29ec5dfbd2d84b8724e951d6fa0d5d9e',1,'turbojpeg.h']]], ['tj3decompresstoyuv8_20',['tj3DecompressToYUV8',['../group___turbo_j_p_e_g.html#ga1e6bf6a19fec3f9fa7534348879d8320',1,'turbojpeg.h']]],
['tjcs_21',['TJCS',['../group___turbo_j_p_e_g.html#ga4f83ad3368e0e29d1957be0efa7c3720',1,'turbojpeg.h']]], ['tj3decompresstoyuvplanes8_21',['tj3DecompressToYUVPlanes8',['../group___turbo_j_p_e_g.html#ga934373482dbbf257f2280505b6ff4fb5',1,'turbojpeg.h']]],
['tjcs_5fcmyk_22',['TJCS_CMYK',['../group___turbo_j_p_e_g.html#gga4f83ad3368e0e29d1957be0efa7c3720a6c8b636152ac8195b869587db315ee53',1,'turbojpeg.h']]], ['tj3destroy_22',['tj3Destroy',['../group___turbo_j_p_e_g.html#ga53fbadf4560e95a65b8f5ab81703fe82',1,'turbojpeg.h']]],
['tjcs_5fgray_23',['TJCS_GRAY',['../group___turbo_j_p_e_g.html#gga4f83ad3368e0e29d1957be0efa7c3720ab3e7d6a87f695e45b81c1b5262b5a50a',1,'turbojpeg.h']]], ['tj3encodeyuv8_23',['tj3EncodeYUV8',['../group___turbo_j_p_e_g.html#ga2a8d50f130bde10f0a04030f8cc59936',1,'turbojpeg.h']]],
['tjcs_5frgb_24',['TJCS_RGB',['../group___turbo_j_p_e_g.html#gga4f83ad3368e0e29d1957be0efa7c3720a677cb7ccb85c4038ac41964a2e09e555',1,'turbojpeg.h']]], ['tj3encodeyuvplanes8_24',['tj3EncodeYUVPlanes8',['../group___turbo_j_p_e_g.html#gae2e9df38790e9bddc249d04cb158a4cf',1,'turbojpeg.h']]],
['tjcs_5fycbcr_25',['TJCS_YCbCr',['../group___turbo_j_p_e_g.html#gga4f83ad3368e0e29d1957be0efa7c3720a7389b8f65bb387ffedce3efd0d78ec75',1,'turbojpeg.h']]], ['tj3free_25',['tj3Free',['../group___turbo_j_p_e_g.html#gaddb84fb6c81769e9faa0f5a63b296606',1,'turbojpeg.h']]],
['tjcs_5fycck_26',['TJCS_YCCK',['../group___turbo_j_p_e_g.html#gga4f83ad3368e0e29d1957be0efa7c3720a53839e0fe867b76b58d16b0a1a7c598e',1,'turbojpeg.h']]], ['tj3get_26',['tj3Get',['../group___turbo_j_p_e_g.html#ga34af9ba3183bdf0ec7c8f47bb9a4c84f',1,'turbojpeg.h']]],
['tjdecodeyuv_27',['tjDecodeYUV',['../group___turbo_j_p_e_g.html#ga97c2cedc1e2bade15a84164c94e503c1',1,'turbojpeg.h']]], ['tj3geterrorcode_27',['tj3GetErrorCode',['../group___turbo_j_p_e_g.html#gab8c8279f1415fe425ff30dbbc56013bd',1,'turbojpeg.h']]],
['tjdecodeyuvplanes_28',['tjDecodeYUVPlanes',['../group___turbo_j_p_e_g.html#ga10e837c07fa9d25770565b237d3898d9',1,'turbojpeg.h']]], ['tj3geterrorstr_28',['tj3GetErrorStr',['../group___turbo_j_p_e_g.html#gaf2aab0e6dbb3edc57646b0fec25e8bb2',1,'turbojpeg.h']]],
['tjdecompress2_29',['tjDecompress2',['../group___turbo_j_p_e_g.html#gae9eccef8b682a48f43a9117c231ed013',1,'turbojpeg.h']]], ['tj3getscalingfactors_29',['tj3GetScalingFactors',['../group___turbo_j_p_e_g.html#ga74397f8e0587d4233182c72f085aaf04',1,'turbojpeg.h']]],
['tjdecompressheader4_30',['tjDecompressHeader4',['../group___turbo_j_p_e_g.html#gac104e6e729f57f195009405949d198dc',1,'turbojpeg.h']]], ['tj3init_30',['tj3Init',['../group___turbo_j_p_e_g.html#ga69c09d39f97ec30250ad3605ace7e5df',1,'turbojpeg.h']]],
['tjdecompresstoyuv2_31',['tjDecompressToYUV2',['../group___turbo_j_p_e_g.html#ga5a3093e325598c17a9f004323af6fafa',1,'turbojpeg.h']]], ['tj3jpegbufsize_31',['tj3JPEGBufSize',['../group___turbo_j_p_e_g.html#gac6285e58e35a35d871d7162ec5a929c4',1,'turbojpeg.h']]],
['tjdecompresstoyuvplanes_32',['tjDecompressToYUVPlanes',['../group___turbo_j_p_e_g.html#gaa59f901a5258ada5bd0185ad59368540',1,'turbojpeg.h']]], ['tj3loadimage12_32',['tj3LoadImage12',['../group___turbo_j_p_e_g.html#ga1f03c26892a26d4ce077ed6a4ac40e8f',1,'turbojpeg.h']]],
['tjdestroy_33',['tjDestroy',['../group___turbo_j_p_e_g.html#ga75f355fa27225ba1a4ee392c852394d2',1,'turbojpeg.h']]], ['tj3loadimage16_33',['tj3LoadImage16',['../group___turbo_j_p_e_g.html#ga638aeba63e0ccb89d472fdbf34224cfc',1,'turbojpeg.h']]],
['tjencodeyuv3_34',['tjEncodeYUV3',['../group___turbo_j_p_e_g.html#ga5d619e0a02b71e05a8dffb764f6d7a64',1,'turbojpeg.h']]], ['tj3loadimage8_34',['tj3LoadImage8',['../group___turbo_j_p_e_g.html#ga565aaae7be3f8ca9099b56655c893251',1,'turbojpeg.h']]],
['tjencodeyuvplanes_35',['tjEncodeYUVPlanes',['../group___turbo_j_p_e_g.html#gae2d04c72457fe7f4d60cf78ab1b1feb1',1,'turbojpeg.h']]], ['tj3saveimage12_35',['tj3SaveImage12',['../group___turbo_j_p_e_g.html#ga7c64b5106d04267a46aad85f9714ad90',1,'turbojpeg.h']]],
['tjerr_36',['TJERR',['../group___turbo_j_p_e_g.html#gafbc17cfa57d0d5d11fea35ac025950fe',1,'turbojpeg.h']]], ['tj3saveimage16_36',['tj3SaveImage16',['../group___turbo_j_p_e_g.html#ga0fd87851f4266aca24bf4594dd0c0e71',1,'turbojpeg.h']]],
['tjerr_5ffatal_37',['TJERR_FATAL',['../group___turbo_j_p_e_g.html#ggafbc17cfa57d0d5d11fea35ac025950feafc9cceeada13122b09e4851e3788039a',1,'turbojpeg.h']]], ['tj3saveimage8_37',['tj3SaveImage8',['../group___turbo_j_p_e_g.html#gaa4ec838988e469cc15618e4690cc8722',1,'turbojpeg.h']]],
['tjerr_5fwarning_38',['TJERR_WARNING',['../group___turbo_j_p_e_g.html#ggafbc17cfa57d0d5d11fea35ac025950fea342dd6e2aedb47bb257b4e7568329b59',1,'turbojpeg.h']]], ['tj3set_38',['tj3Set',['../group___turbo_j_p_e_g.html#gaddf92640bfee3e8622218c713e77e7db',1,'turbojpeg.h']]],
['tjflag_5faccuratedct_39',['TJFLAG_ACCURATEDCT',['../group___turbo_j_p_e_g.html#gacb233cfd722d66d1ccbf48a7de81f0e0',1,'turbojpeg.h']]], ['tj3setcroppingregion_39',['tj3SetCroppingRegion',['../group___turbo_j_p_e_g.html#gaa49c7bd4c9431667a043cfc93388ba1c',1,'turbojpeg.h']]],
['tjflag_5farithmetic_40',['TJFLAG_ARITHMETIC',['../group___turbo_j_p_e_g.html#ga91fb6ac6054a32375f1b90d48129f335',1,'turbojpeg.h']]], ['tj3setscalingfactor_40',['tj3SetScalingFactor',['../group___turbo_j_p_e_g.html#ga89da17ee1e43ff423382cbc145803c75',1,'turbojpeg.h']]],
['tjflag_5fbottomup_41',['TJFLAG_BOTTOMUP',['../group___turbo_j_p_e_g.html#ga72ecf4ebe6eb702d3c6f5ca27455e1ec',1,'turbojpeg.h']]], ['tj3transform_41',['tj3Transform',['../group___turbo_j_p_e_g.html#gaff23ba1dcabed456794b844791613920',1,'turbojpeg.h']]],
['tjflag_5ffastdct_42',['TJFLAG_FASTDCT',['../group___turbo_j_p_e_g.html#gaabce235db80d3f698b27f36cbd453da2',1,'turbojpeg.h']]], ['tj3yuvbufsize_42',['tj3YUVBufSize',['../group___turbo_j_p_e_g.html#gaaebaa16973a0f550a66eca5765ed0546',1,'turbojpeg.h']]],
['tjflag_5ffastupsample_43',['TJFLAG_FASTUPSAMPLE',['../group___turbo_j_p_e_g.html#ga4ee4506c81177a06f77e2504a22efd2d',1,'turbojpeg.h']]], ['tj3yuvplaneheight_43',['tj3YUVPlaneHeight',['../group___turbo_j_p_e_g.html#ga969767ec8180cc3edd99cf507f87299b',1,'turbojpeg.h']]],
['tjflag_5flimitscans_44',['TJFLAG_LIMITSCANS',['../group___turbo_j_p_e_g.html#ga163e6482dc5096831feef9c79ff3f805',1,'turbojpeg.h']]], ['tj3yuvplanesize_44',['tj3YUVPlaneSize',['../group___turbo_j_p_e_g.html#gacc19d265edce76b46146f59579f9438d',1,'turbojpeg.h']]],
['tjflag_5flossless_45',['TJFLAG_LOSSLESS',['../group___turbo_j_p_e_g.html#gaaf0e8b612bb5b981329db9f30e2115bd',1,'turbojpeg.h']]], ['tj3yuvplanewidth_45',['tj3YUVPlaneWidth',['../group___turbo_j_p_e_g.html#gac99d1933ede1d59fcada9a826e88eb2d',1,'turbojpeg.h']]],
['tjflag_5fnorealloc_46',['TJFLAG_NOREALLOC',['../group___turbo_j_p_e_g.html#ga8808d403c68b62aaa58a4c1e58e98963',1,'turbojpeg.h']]], ['tj_5fnumcs_46',['TJ_NUMCS',['../group___turbo_j_p_e_g.html#ga39f57a6fb02d9cf32e7b6890099b5a71',1,'turbojpeg.h']]],
['tjflag_5fprogressive_47',['TJFLAG_PROGRESSIVE',['../group___turbo_j_p_e_g.html#ga43b426750b46190a25d34a67ef76df1b',1,'turbojpeg.h']]], ['tj_5fnumerr_47',['TJ_NUMERR',['../group___turbo_j_p_e_g.html#ga79bde1b4a3e2351e00887e47781b966e',1,'turbojpeg.h']]],
['tjflag_5fstoponwarning_48',['TJFLAG_STOPONWARNING',['../group___turbo_j_p_e_g.html#ga519cfa4ef6c18d9e5b455fdf59306a3a',1,'turbojpeg.h']]], ['tj_5fnuminit_48',['TJ_NUMINIT',['../group___turbo_j_p_e_g.html#ga5e0e8c784295c636f0bf8dab93c4bddf',1,'turbojpeg.h']]],
['tjfree_49',['tjFree',['../group___turbo_j_p_e_g.html#gaea863d2da0cdb609563aabdf9196514b',1,'turbojpeg.h']]], ['tj_5fnumparam_49',['TJ_NUMPARAM',['../group___turbo_j_p_e_g.html#gaa628be5db276fc3676dfba205d45d780',1,'turbojpeg.h']]],
['tjgeterrorcode_50',['tjGetErrorCode',['../group___turbo_j_p_e_g.html#ga414feeffbf860ebd31c745df203de410',1,'turbojpeg.h']]], ['tj_5fnumpf_50',['TJ_NUMPF',['../group___turbo_j_p_e_g.html#ga7010a4402f54a45ba822ad8675a4655e',1,'turbojpeg.h']]],
['tjgeterrorstr2_51',['tjGetErrorStr2',['../group___turbo_j_p_e_g.html#ga1ead8574f9f39fbafc6b497124e7aafa',1,'turbojpeg.h']]], ['tj_5fnumsamp_51',['TJ_NUMSAMP',['../group___turbo_j_p_e_g.html#ga5ef3d169162ce77ce348e292a0b7477c',1,'turbojpeg.h']]],
['tjgetscalingfactors_52',['tjGetScalingFactors',['../group___turbo_j_p_e_g.html#ga193d0977b3b9966d53a6c402e90899b1',1,'turbojpeg.h']]], ['tj_5fnumxop_52',['TJ_NUMXOP',['../group___turbo_j_p_e_g.html#ga0f6dbd18adf38b7d46ac547f0f4d562c',1,'turbojpeg.h']]],
['tjgreenoffset_53',['tjGreenOffset',['../group___turbo_j_p_e_g.html#ga82d6e35da441112a411da41923c0ba2f',1,'turbojpeg.h']]], ['tjalphaoffset_53',['tjAlphaOffset',['../group___turbo_j_p_e_g.html#ga5af0ab065feefd526debf1e20c43e837',1,'turbojpeg.h']]],
['tjhandle_54',['tjhandle',['../group___turbo_j_p_e_g.html#ga758d2634ecb4949de7815cba621f5763',1,'turbojpeg.h']]], ['tjblueoffset_54',['tjBlueOffset',['../group___turbo_j_p_e_g.html#ga84e2e35d3f08025f976ec1ec53693dea',1,'turbojpeg.h']]],
['tjinitcompress_55',['tjInitCompress',['../group___turbo_j_p_e_g.html#ga9d63a05fc6d813f4aae06107041a37e8',1,'turbojpeg.h']]], ['tjcs_55',['TJCS',['../group___turbo_j_p_e_g.html#ga4f83ad3368e0e29d1957be0efa7c3720',1,'turbojpeg.h']]],
['tjinitdecompress_56',['tjInitDecompress',['../group___turbo_j_p_e_g.html#ga52300eac3f3d9ef4bab303bc244f62d3',1,'turbojpeg.h']]], ['tjcs_5fcmyk_56',['TJCS_CMYK',['../group___turbo_j_p_e_g.html#gga4f83ad3368e0e29d1957be0efa7c3720a6c8b636152ac8195b869587db315ee53',1,'turbojpeg.h']]],
['tjinittransform_57',['tjInitTransform',['../group___turbo_j_p_e_g.html#ga928beff6ac248ceadf01089fc6b41957',1,'turbojpeg.h']]], ['tjcs_5fgray_57',['TJCS_GRAY',['../group___turbo_j_p_e_g.html#gga4f83ad3368e0e29d1957be0efa7c3720ab3e7d6a87f695e45b81c1b5262b5a50a',1,'turbojpeg.h']]],
['tjloadimage_58',['tjLoadImage',['../group___turbo_j_p_e_g.html#gaffbd83c375e79f5db4b5c5d8ad4466e7',1,'turbojpeg.h']]], ['tjcs_5frgb_58',['TJCS_RGB',['../group___turbo_j_p_e_g.html#gga4f83ad3368e0e29d1957be0efa7c3720a677cb7ccb85c4038ac41964a2e09e555',1,'turbojpeg.h']]],
['tjmcuheight_59',['tjMCUHeight',['../group___turbo_j_p_e_g.html#gabd247bb9fecb393eca57366feb8327bf',1,'turbojpeg.h']]], ['tjcs_5fycbcr_59',['TJCS_YCbCr',['../group___turbo_j_p_e_g.html#gga4f83ad3368e0e29d1957be0efa7c3720a7389b8f65bb387ffedce3efd0d78ec75',1,'turbojpeg.h']]],
['tjmcuwidth_60',['tjMCUWidth',['../group___turbo_j_p_e_g.html#ga9e61e7cd47a15a173283ba94e781308c',1,'turbojpeg.h']]], ['tjcs_5fycck_60',['TJCS_YCCK',['../group___turbo_j_p_e_g.html#gga4f83ad3368e0e29d1957be0efa7c3720a53839e0fe867b76b58d16b0a1a7c598e',1,'turbojpeg.h']]],
['tjpad_61',['TJPAD',['../group___turbo_j_p_e_g.html#ga0aba955473315e405295d978f0c16511',1,'turbojpeg.h']]], ['tjerr_61',['TJERR',['../group___turbo_j_p_e_g.html#gafbc17cfa57d0d5d11fea35ac025950fe',1,'turbojpeg.h']]],
['tjpf_62',['TJPF',['../group___turbo_j_p_e_g.html#gac916144e26c3817ac514e64ae5d12e2a',1,'turbojpeg.h']]], ['tjerr_5ffatal_62',['TJERR_FATAL',['../group___turbo_j_p_e_g.html#ggafbc17cfa57d0d5d11fea35ac025950feafc9cceeada13122b09e4851e3788039a',1,'turbojpeg.h']]],
['tjpf_5fabgr_63',['TJPF_ABGR',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa1ba1a7f1631dbeaa49a0a85fc4a40081',1,'turbojpeg.h']]], ['tjerr_5fwarning_63',['TJERR_WARNING',['../group___turbo_j_p_e_g.html#ggafbc17cfa57d0d5d11fea35ac025950fea342dd6e2aedb47bb257b4e7568329b59',1,'turbojpeg.h']]],
['tjpf_5fargb_64',['TJPF_ARGB',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aae8f846ed9d9de99b6e1dfe448848765c',1,'turbojpeg.h']]], ['tjgreenoffset_64',['tjGreenOffset',['../group___turbo_j_p_e_g.html#ga82d6e35da441112a411da41923c0ba2f',1,'turbojpeg.h']]],
['tjpf_5fbgr_65',['TJPF_BGR',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aab10624437fb8ef495a0b153e65749839',1,'turbojpeg.h']]], ['tjhandle_65',['tjhandle',['../group___turbo_j_p_e_g.html#ga758d2634ecb4949de7815cba621f5763',1,'turbojpeg.h']]],
['tjpf_5fbgra_66',['TJPF_BGRA',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aac037ff1845cf9b74bb81a3659c2b9fb4',1,'turbojpeg.h']]], ['tjinit_66',['TJINIT',['../group___turbo_j_p_e_g.html#ga3850bbee1313e752e667b4eb08b1e086',1,'turbojpeg.h']]],
['tjpf_5fbgrx_67',['TJPF_BGRX',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa2a1fbf569ca79897eae886e3376ca4c8',1,'turbojpeg.h']]], ['tjinit_5fcompress_67',['TJINIT_COMPRESS',['../group___turbo_j_p_e_g.html#gga3850bbee1313e752e667b4eb08b1e086aa45ac279e3dc6ffabc4b0f45864da796',1,'turbojpeg.h']]],
['tjpf_5fcmyk_68',['TJPF_CMYK',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa7f5100ec44c91994e243f1cf55553f8b',1,'turbojpeg.h']]], ['tjinit_5fdecompress_68',['TJINIT_DECOMPRESS',['../group___turbo_j_p_e_g.html#gga3850bbee1313e752e667b4eb08b1e086a4b8ca1ef700699b71350700bf95c2167',1,'turbojpeg.h']]],
['tjpf_5fgray_69',['TJPF_GRAY',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa5431b54b015337705f13118073711a1a',1,'turbojpeg.h']]], ['tjinit_5ftransform_69',['TJINIT_TRANSFORM',['../group___turbo_j_p_e_g.html#gga3850bbee1313e752e667b4eb08b1e086a8d58a2a4c45b3e0cd349746544a6e0c2',1,'turbojpeg.h']]],
['tjpf_5frgb_70',['TJPF_RGB',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa7ce93230bff449518ce387c17e6ed37c',1,'turbojpeg.h']]], ['tjmcuheight_70',['tjMCUHeight',['../group___turbo_j_p_e_g.html#gabd247bb9fecb393eca57366feb8327bf',1,'turbojpeg.h']]],
['tjpf_5frgba_71',['TJPF_RGBA',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa88d2e88fab67f6503cf972e14851cc12',1,'turbojpeg.h']]], ['tjmcuwidth_71',['tjMCUWidth',['../group___turbo_j_p_e_g.html#ga9e61e7cd47a15a173283ba94e781308c',1,'turbojpeg.h']]],
['tjpf_5frgbx_72',['TJPF_RGBX',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa83973bebb7e2dc6fa8bae89ff3f42e01',1,'turbojpeg.h']]], ['tjparam_72',['TJPARAM',['../group___turbo_j_p_e_g.html#gaa0f6be63ba78278299c9f5c12031fe82',1,'turbojpeg.h']]],
['tjpf_5funknown_73',['TJPF_UNKNOWN',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa84c1a6cead7952998e2fb895844a21ed',1,'turbojpeg.h']]], ['tjparam_5farithmetic_73',['TJPARAM_ARITHMETIC',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a1c756757384308145602c040524aebf7',1,'turbojpeg.h']]],
['tjpf_5fxbgr_74',['TJPF_XBGR',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aaf6603b27147de47e212e75dac027b2af',1,'turbojpeg.h']]], ['tjparam_5fbottomup_74',['TJPARAM_BOTTOMUP',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a924657172695ed6cb0b128219546fcce',1,'turbojpeg.h']]],
['tjpf_5fxrgb_75',['TJPF_XRGB',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aadae996905efcfa3b42a0bb3bea7f9d84',1,'turbojpeg.h']]], ['tjparam_5fcolorspace_75',['TJPARAM_COLORSPACE',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a46a10d46309514907d0c39fcd86c324c',1,'turbojpeg.h']]],
['tjpixelsize_76',['tjPixelSize',['../group___turbo_j_p_e_g.html#gad77cf8fe5b2bfd3cb3f53098146abb4c',1,'turbojpeg.h']]], ['tjparam_5fdensityunits_76',['TJPARAM_DENSITYUNITS',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a4c045981bd8a303521a401dbbe1df208',1,'turbojpeg.h']]],
['tjplaneheight_77',['tjPlaneHeight',['../group___turbo_j_p_e_g.html#ga1a209696c6a80748f20e134b3c64789f',1,'turbojpeg.h']]], ['tjparam_5ffastdct_77',['TJPARAM_FASTDCT',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a6914692ac6ec5567787d592b7563f627',1,'turbojpeg.h']]],
['tjplanesizeyuv_78',['tjPlaneSizeYUV',['../group___turbo_j_p_e_g.html#gab4ab7b24f6e797d79abaaa670373961d',1,'turbojpeg.h']]], ['tjparam_5ffastupsample_78',['TJPARAM_FASTUPSAMPLE',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a0e051ac106f7b7402b690a5daf4869c0',1,'turbojpeg.h']]],
['tjplanewidth_79',['tjPlaneWidth',['../group___turbo_j_p_e_g.html#ga63fb66bb1e36c74008c4634360becbb1',1,'turbojpeg.h']]], ['tjparam_5fjpegheight_79',['TJPARAM_JPEGHEIGHT',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a8f76673be73f2b659440a9572a65a95f',1,'turbojpeg.h']]],
['tjredoffset_80',['tjRedOffset',['../group___turbo_j_p_e_g.html#gadd9b446742ac8a3923f7992c7988fea8',1,'turbojpeg.h']]], ['tjparam_5fjpegwidth_80',['TJPARAM_JPEGWIDTH',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a02ab77fb294a0c9061a78cd424c82dd8',1,'turbojpeg.h']]],
['tjregion_81',['tjregion',['../structtjregion.html',1,'']]], ['tjparam_5flossless_81',['TJPARAM_LOSSLESS',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a249f35f0770792b19f995e603bb17c6f',1,'turbojpeg.h']]],
['tjsamp_82',['TJSAMP',['../group___turbo_j_p_e_g.html#ga1d047060ea80bb9820d540bb928e9074',1,'turbojpeg.h']]], ['tjparam_5flosslesspsv_82',['TJPARAM_LOSSLESSPSV',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82abcc997d40e5bec84817c12b76ef84159',1,'turbojpeg.h']]],
['tjsamp_5f411_83',['TJSAMP_411',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074a28ec62575e5ea295c3fde3001dc628e2',1,'turbojpeg.h']]], ['tjparam_5flosslesspt_83',['TJPARAM_LOSSLESSPT',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a4a6c6f25764ecaf4231a36bff844e46a',1,'turbojpeg.h']]],
['tjsamp_5f420_84',['TJSAMP_420',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074a63085dbf683cfe39e513cdb6343e3737',1,'turbojpeg.h']]], ['tjparam_5fnorealloc_84',['TJPARAM_NOREALLOC',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82ae64ffb358bc7b194fd48e0f27750b29b',1,'turbojpeg.h']]],
['tjsamp_5f422_85',['TJSAMP_422',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074a136130902cc578f11f32429b59368404',1,'turbojpeg.h']]], ['tjparam_5foptimize_85',['TJPARAM_OPTIMIZE',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a8f0af9afc0b36443751f9ee82b760aa6',1,'turbojpeg.h']]],
['tjsamp_5f440_86',['TJSAMP_440',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074accf740e6f3aa6ba20ba922cad13cb974',1,'turbojpeg.h']]], ['tjparam_5fprecision_86',['TJPARAM_PRECISION',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a781db82741934e8cd008d308597c59d8',1,'turbojpeg.h']]],
['tjsamp_5f444_87',['TJSAMP_444',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074afb8da4f44197837bdec0a4f593dacae3',1,'turbojpeg.h']]], ['tjparam_5fprogressive_87',['TJPARAM_PROGRESSIVE',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a1716f242b3859905b4a317dae8cfb75f',1,'turbojpeg.h']]],
['tjsamp_5fgray_88',['TJSAMP_GRAY',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074a3f1c9504842ddc7a48d0f690754b6248',1,'turbojpeg.h']]], ['tjparam_5fquality_88',['TJPARAM_QUALITY',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a0467e8792621f2d817dc2af563d3186c',1,'turbojpeg.h']]],
['tjsaveimage_89',['tjSaveImage',['../group___turbo_j_p_e_g.html#ga6f445b22d8933ae4815b3370a538d879',1,'turbojpeg.h']]], ['tjparam_5frestartblocks_89',['TJPARAM_RESTARTBLOCKS',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a343c72883b7160f23f3ef46fc548a0ec',1,'turbojpeg.h']]],
['tjscaled_90',['TJSCALED',['../group___turbo_j_p_e_g.html#ga84878bb65404204743aa18cac02781df',1,'turbojpeg.h']]], ['tjparam_5frestartrows_90',['TJPARAM_RESTARTROWS',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a714367585952fe5c863f0dba5bd37e5c',1,'turbojpeg.h']]],
['tjscalingfactor_91',['tjscalingfactor',['../structtjscalingfactor.html',1,'']]], ['tjparam_5fscanlimit_91',['TJPARAM_SCANLIMIT',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82ac478910e20ecf61b914f9824d80f8167',1,'turbojpeg.h']]],
['tjtransform_92',['tjtransform',['../structtjtransform.html',1,'tjtransform'],['../group___turbo_j_p_e_g.html#ga9cb8abf4cc91881e04a0329b2270be25',1,'tjTransform(tjhandle handle, const unsigned char *jpegBuf, unsigned long jpegSize, int n, unsigned char **dstBufs, unsigned long *dstSizes, tjtransform *transforms, int flags):&#160;turbojpeg.h'],['../group___turbo_j_p_e_g.html#ga504805ec0161f1b505397ca0118bf8fd',1,'tjtransform():&#160;turbojpeg.h']]], ['tjparam_5fstoponwarning_92',['TJPARAM_STOPONWARNING',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a555e2212079fa49b30bcd2879c6c8ddb',1,'turbojpeg.h']]],
['tjxop_93',['TJXOP',['../group___turbo_j_p_e_g.html#ga2de531af4e7e6c4f124908376b354866',1,'turbojpeg.h']]], ['tjparam_5fsubsamp_93',['TJPARAM_SUBSAMP',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a2a3494a8215d3de4fdbaeb2ba6f6b03a',1,'turbojpeg.h']]],
['tjxop_5fhflip_94',['TJXOP_HFLIP',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866aa0df69776caa30f0fa28e26332d311ce',1,'turbojpeg.h']]], ['tjparam_5fxdensity_94',['TJPARAM_XDENSITY',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a4de5c9d7cab5be806143a43c3b0e0877',1,'turbojpeg.h']]],
['tjxop_5fnone_95',['TJXOP_NONE',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866aad88c0366cd3f7d0eac9d7a3fa1c2c27',1,'turbojpeg.h']]], ['tjparam_5fydensity_95',['TJPARAM_YDENSITY',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82abda48f2df7eb9b88e2b7621efb017eba',1,'turbojpeg.h']]],
['tjxop_5frot180_96',['TJXOP_ROT180',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a140952eb8dd0300accfcc22726d69692',1,'turbojpeg.h']]], ['tjpf_96',['TJPF',['../group___turbo_j_p_e_g.html#gac916144e26c3817ac514e64ae5d12e2a',1,'turbojpeg.h']]],
['tjxop_5frot270_97',['TJXOP_ROT270',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a3064ee5dfb7f032df332818587567a08',1,'turbojpeg.h']]], ['tjpf_5fabgr_97',['TJPF_ABGR',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa1ba1a7f1631dbeaa49a0a85fc4a40081',1,'turbojpeg.h']]],
['tjxop_5frot90_98',['TJXOP_ROT90',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a43b2bbb23bc4bd548422d43fbe9af128',1,'turbojpeg.h']]], ['tjpf_5fargb_98',['TJPF_ARGB',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aae8f846ed9d9de99b6e1dfe448848765c',1,'turbojpeg.h']]],
['tjxop_5ftranspose_99',['TJXOP_TRANSPOSE',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a31060aed199f886afdd417f80499c32d',1,'turbojpeg.h']]], ['tjpf_5fbgr_99',['TJPF_BGR',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aab10624437fb8ef495a0b153e65749839',1,'turbojpeg.h']]],
['tjxop_5ftransverse_100',['TJXOP_TRANSVERSE',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866af3b14d488aea6ece9e5b3df73a74d6a4',1,'turbojpeg.h']]], ['tjpf_5fbgra_100',['TJPF_BGRA',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aac037ff1845cf9b74bb81a3659c2b9fb4',1,'turbojpeg.h']]],
['tjxop_5fvflip_101',['TJXOP_VFLIP',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a324eddfbec53b7e691f61e56929d0d5d',1,'turbojpeg.h']]], ['tjpf_5fbgrx_101',['TJPF_BGRX',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa2a1fbf569ca79897eae886e3376ca4c8',1,'turbojpeg.h']]],
['tjxopt_5farithmetic_102',['TJXOPT_ARITHMETIC',['../group___turbo_j_p_e_g.html#gaecaaa3b7e2af812592c015d83207f010',1,'turbojpeg.h']]], ['tjpf_5fcmyk_102',['TJPF_CMYK',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa7f5100ec44c91994e243f1cf55553f8b',1,'turbojpeg.h']]],
['tjxopt_5fcopynone_103',['TJXOPT_COPYNONE',['../group___turbo_j_p_e_g.html#ga153b468cfb905d0de61706c838986fe8',1,'turbojpeg.h']]], ['tjpf_5fgray_103',['TJPF_GRAY',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa5431b54b015337705f13118073711a1a',1,'turbojpeg.h']]],
['tjxopt_5fcrop_104',['TJXOPT_CROP',['../group___turbo_j_p_e_g.html#ga9c771a757fc1294add611906b89ab2d2',1,'turbojpeg.h']]], ['tjpf_5frgb_104',['TJPF_RGB',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa7ce93230bff449518ce387c17e6ed37c',1,'turbojpeg.h']]],
['tjxopt_5fgray_105',['TJXOPT_GRAY',['../group___turbo_j_p_e_g.html#ga3acee7b48ade1b99e5588736007c2589',1,'turbojpeg.h']]], ['tjpf_5frgba_105',['TJPF_RGBA',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa88d2e88fab67f6503cf972e14851cc12',1,'turbojpeg.h']]],
['tjxopt_5fnooutput_106',['TJXOPT_NOOUTPUT',['../group___turbo_j_p_e_g.html#gafbf992bbf6e006705886333703ffab31',1,'turbojpeg.h']]], ['tjpf_5frgbx_106',['TJPF_RGBX',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa83973bebb7e2dc6fa8bae89ff3f42e01',1,'turbojpeg.h']]],
['tjxopt_5fperfect_107',['TJXOPT_PERFECT',['../group___turbo_j_p_e_g.html#ga50e03cb5ed115330e212417429600b00',1,'turbojpeg.h']]], ['tjpf_5funknown_107',['TJPF_UNKNOWN',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa84c1a6cead7952998e2fb895844a21ed',1,'turbojpeg.h']]],
['tjxopt_5fprogressive_108',['TJXOPT_PROGRESSIVE',['../group___turbo_j_p_e_g.html#gad2371c80674584ecc1a7d75e564cf026',1,'turbojpeg.h']]], ['tjpf_5fxbgr_108',['TJPF_XBGR',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aaf6603b27147de47e212e75dac027b2af',1,'turbojpeg.h']]],
['tjxopt_5ftrim_109',['TJXOPT_TRIM',['../group___turbo_j_p_e_g.html#ga319826b7eb1583c0595bbe7b95428709',1,'turbojpeg.h']]], ['tjpf_5fxrgb_109',['TJPF_XRGB',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aadae996905efcfa3b42a0bb3bea7f9d84',1,'turbojpeg.h']]],
['turbojpeg_110',['TurboJPEG',['../group___turbo_j_p_e_g.html',1,'']]] ['tjpixelsize_110',['tjPixelSize',['../group___turbo_j_p_e_g.html#gad77cf8fe5b2bfd3cb3f53098146abb4c',1,'turbojpeg.h']]],
['tjredoffset_111',['tjRedOffset',['../group___turbo_j_p_e_g.html#gadd9b446742ac8a3923f7992c7988fea8',1,'turbojpeg.h']]],
['tjregion_112',['tjregion',['../structtjregion.html',1,'']]],
['tjsamp_113',['TJSAMP',['../group___turbo_j_p_e_g.html#ga1d047060ea80bb9820d540bb928e9074',1,'turbojpeg.h']]],
['tjsamp_5f411_114',['TJSAMP_411',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074a28ec62575e5ea295c3fde3001dc628e2',1,'turbojpeg.h']]],
['tjsamp_5f420_115',['TJSAMP_420',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074a63085dbf683cfe39e513cdb6343e3737',1,'turbojpeg.h']]],
['tjsamp_5f422_116',['TJSAMP_422',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074a136130902cc578f11f32429b59368404',1,'turbojpeg.h']]],
['tjsamp_5f440_117',['TJSAMP_440',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074accf740e6f3aa6ba20ba922cad13cb974',1,'turbojpeg.h']]],
['tjsamp_5f444_118',['TJSAMP_444',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074afb8da4f44197837bdec0a4f593dacae3',1,'turbojpeg.h']]],
['tjsamp_5fgray_119',['TJSAMP_GRAY',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074a3f1c9504842ddc7a48d0f690754b6248',1,'turbojpeg.h']]],
['tjsamp_5funknown_120',['TJSAMP_UNKNOWN',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074ac124fa8f6cb41147e3d670dfbdfb7173',1,'turbojpeg.h']]],
['tjscaled_121',['TJSCALED',['../group___turbo_j_p_e_g.html#ga84878bb65404204743aa18cac02781df',1,'turbojpeg.h']]],
['tjscalingfactor_122',['tjscalingfactor',['../structtjscalingfactor.html',1,'']]],
['tjtransform_123',['tjtransform',['../structtjtransform.html',1,'tjtransform'],['../group___turbo_j_p_e_g.html#ga504805ec0161f1b505397ca0118bf8fd',1,'tjtransform():&#160;turbojpeg.h']]],
['tjuncropped_124',['TJUNCROPPED',['../group___turbo_j_p_e_g.html#ga6f192ad58a5a5802e145149d83c643bf',1,'turbojpeg.h']]],
['tjunscaled_125',['TJUNSCALED',['../group___turbo_j_p_e_g.html#ga7880644a0849161ad20933536169ee19',1,'turbojpeg.h']]],
['tjxop_126',['TJXOP',['../group___turbo_j_p_e_g.html#ga2de531af4e7e6c4f124908376b354866',1,'turbojpeg.h']]],
['tjxop_5fhflip_127',['TJXOP_HFLIP',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866aa0df69776caa30f0fa28e26332d311ce',1,'turbojpeg.h']]],
['tjxop_5fnone_128',['TJXOP_NONE',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866aad88c0366cd3f7d0eac9d7a3fa1c2c27',1,'turbojpeg.h']]],
['tjxop_5frot180_129',['TJXOP_ROT180',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a140952eb8dd0300accfcc22726d69692',1,'turbojpeg.h']]],
['tjxop_5frot270_130',['TJXOP_ROT270',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a3064ee5dfb7f032df332818587567a08',1,'turbojpeg.h']]],
['tjxop_5frot90_131',['TJXOP_ROT90',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a43b2bbb23bc4bd548422d43fbe9af128',1,'turbojpeg.h']]],
['tjxop_5ftranspose_132',['TJXOP_TRANSPOSE',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a31060aed199f886afdd417f80499c32d',1,'turbojpeg.h']]],
['tjxop_5ftransverse_133',['TJXOP_TRANSVERSE',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866af3b14d488aea6ece9e5b3df73a74d6a4',1,'turbojpeg.h']]],
['tjxop_5fvflip_134',['TJXOP_VFLIP',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a324eddfbec53b7e691f61e56929d0d5d',1,'turbojpeg.h']]],
['tjxopt_5farithmetic_135',['TJXOPT_ARITHMETIC',['../group___turbo_j_p_e_g.html#gaecaaa3b7e2af812592c015d83207f010',1,'turbojpeg.h']]],
['tjxopt_5fcopynone_136',['TJXOPT_COPYNONE',['../group___turbo_j_p_e_g.html#ga153b468cfb905d0de61706c838986fe8',1,'turbojpeg.h']]],
['tjxopt_5fcrop_137',['TJXOPT_CROP',['../group___turbo_j_p_e_g.html#ga9c771a757fc1294add611906b89ab2d2',1,'turbojpeg.h']]],
['tjxopt_5fgray_138',['TJXOPT_GRAY',['../group___turbo_j_p_e_g.html#ga3acee7b48ade1b99e5588736007c2589',1,'turbojpeg.h']]],
['tjxopt_5fnooutput_139',['TJXOPT_NOOUTPUT',['../group___turbo_j_p_e_g.html#gafbf992bbf6e006705886333703ffab31',1,'turbojpeg.h']]],
['tjxopt_5foptimize_140',['TJXOPT_OPTIMIZE',['../group___turbo_j_p_e_g.html#ga6bedf37aa9e1122f3ec9f7302ca59117',1,'turbojpeg.h']]],
['tjxopt_5fperfect_141',['TJXOPT_PERFECT',['../group___turbo_j_p_e_g.html#ga50e03cb5ed115330e212417429600b00',1,'turbojpeg.h']]],
['tjxopt_5fprogressive_142',['TJXOPT_PROGRESSIVE',['../group___turbo_j_p_e_g.html#gad2371c80674584ecc1a7d75e564cf026',1,'turbojpeg.h']]],
['tjxopt_5ftrim_143',['TJXOPT_TRIM',['../group___turbo_j_p_e_g.html#ga319826b7eb1583c0595bbe7b95428709',1,'turbojpeg.h']]],
['turbojpeg_144',['TurboJPEG',['../group___turbo_j_p_e_g.html',1,'']]]
]; ];

View File

@@ -1,4 +1,4 @@
var searchData= var searchData=
[ [
['w_111',['w',['../structtjregion.html#ab6eb73ceef584fc23c8c8097926dce42',1,'tjregion']]] ['w_145',['w',['../structtjregion.html#ab6eb73ceef584fc23c8c8097926dce42',1,'tjregion']]]
]; ];

View File

@@ -1,4 +1,4 @@
var searchData= var searchData=
[ [
['x_112',['x',['../structtjregion.html#a4b6a37a93997091b26a75831fa291ad9',1,'tjregion']]] ['x_146',['x',['../structtjregion.html#a4b6a37a93997091b26a75831fa291ad9',1,'tjregion']]]
]; ];

View File

@@ -1,4 +1,4 @@
var searchData= var searchData=
[ [
['y_113',['y',['../structtjregion.html#a7b3e0c24cfe87acc80e334cafdcf22c2',1,'tjregion']]] ['y_147',['y',['../structtjregion.html#a7b3e0c24cfe87acc80e334cafdcf22c2',1,'tjregion']]]
]; ];

View File

@@ -1,6 +1,6 @@
var searchData= var searchData=
[ [
['tjregion_114',['tjregion',['../structtjregion.html',1,'']]], ['tjregion_148',['tjregion',['../structtjregion.html',1,'']]],
['tjscalingfactor_115',['tjscalingfactor',['../structtjscalingfactor.html',1,'']]], ['tjscalingfactor_149',['tjscalingfactor',['../structtjscalingfactor.html',1,'']]],
['tjtransform_116',['tjtransform',['../structtjtransform.html',1,'']]] ['tjtransform_150',['tjtransform',['../structtjtransform.html',1,'']]]
]; ];

View File

@@ -1,8 +1,10 @@
var searchData= var searchData=
[ [
['tjcs_165',['TJCS',['../group___turbo_j_p_e_g.html#ga4f83ad3368e0e29d1957be0efa7c3720',1,'turbojpeg.h']]], ['tjcs_211',['TJCS',['../group___turbo_j_p_e_g.html#ga4f83ad3368e0e29d1957be0efa7c3720',1,'turbojpeg.h']]],
['tjerr_166',['TJERR',['../group___turbo_j_p_e_g.html#gafbc17cfa57d0d5d11fea35ac025950fe',1,'turbojpeg.h']]], ['tjerr_212',['TJERR',['../group___turbo_j_p_e_g.html#gafbc17cfa57d0d5d11fea35ac025950fe',1,'turbojpeg.h']]],
['tjpf_167',['TJPF',['../group___turbo_j_p_e_g.html#gac916144e26c3817ac514e64ae5d12e2a',1,'turbojpeg.h']]], ['tjinit_213',['TJINIT',['../group___turbo_j_p_e_g.html#ga3850bbee1313e752e667b4eb08b1e086',1,'turbojpeg.h']]],
['tjsamp_168',['TJSAMP',['../group___turbo_j_p_e_g.html#ga1d047060ea80bb9820d540bb928e9074',1,'turbojpeg.h']]], ['tjparam_214',['TJPARAM',['../group___turbo_j_p_e_g.html#gaa0f6be63ba78278299c9f5c12031fe82',1,'turbojpeg.h']]],
['tjxop_169',['TJXOP',['../group___turbo_j_p_e_g.html#ga2de531af4e7e6c4f124908376b354866',1,'turbojpeg.h']]] ['tjpf_215',['TJPF',['../group___turbo_j_p_e_g.html#gac916144e26c3817ac514e64ae5d12e2a',1,'turbojpeg.h']]],
['tjsamp_216',['TJSAMP',['../group___turbo_j_p_e_g.html#ga1d047060ea80bb9820d540bb928e9074',1,'turbojpeg.h']]],
['tjxop_217',['TJXOP',['../group___turbo_j_p_e_g.html#ga2de531af4e7e6c4f124908376b354866',1,'turbojpeg.h']]]
]; ];

View File

@@ -1,37 +1,64 @@
var searchData= var searchData=
[ [
['tjcs_5fcmyk_170',['TJCS_CMYK',['../group___turbo_j_p_e_g.html#gga4f83ad3368e0e29d1957be0efa7c3720a6c8b636152ac8195b869587db315ee53',1,'turbojpeg.h']]], ['tjcs_5fcmyk_218',['TJCS_CMYK',['../group___turbo_j_p_e_g.html#gga4f83ad3368e0e29d1957be0efa7c3720a6c8b636152ac8195b869587db315ee53',1,'turbojpeg.h']]],
['tjcs_5fgray_171',['TJCS_GRAY',['../group___turbo_j_p_e_g.html#gga4f83ad3368e0e29d1957be0efa7c3720ab3e7d6a87f695e45b81c1b5262b5a50a',1,'turbojpeg.h']]], ['tjcs_5fgray_219',['TJCS_GRAY',['../group___turbo_j_p_e_g.html#gga4f83ad3368e0e29d1957be0efa7c3720ab3e7d6a87f695e45b81c1b5262b5a50a',1,'turbojpeg.h']]],
['tjcs_5frgb_172',['TJCS_RGB',['../group___turbo_j_p_e_g.html#gga4f83ad3368e0e29d1957be0efa7c3720a677cb7ccb85c4038ac41964a2e09e555',1,'turbojpeg.h']]], ['tjcs_5frgb_220',['TJCS_RGB',['../group___turbo_j_p_e_g.html#gga4f83ad3368e0e29d1957be0efa7c3720a677cb7ccb85c4038ac41964a2e09e555',1,'turbojpeg.h']]],
['tjcs_5fycbcr_173',['TJCS_YCbCr',['../group___turbo_j_p_e_g.html#gga4f83ad3368e0e29d1957be0efa7c3720a7389b8f65bb387ffedce3efd0d78ec75',1,'turbojpeg.h']]], ['tjcs_5fycbcr_221',['TJCS_YCbCr',['../group___turbo_j_p_e_g.html#gga4f83ad3368e0e29d1957be0efa7c3720a7389b8f65bb387ffedce3efd0d78ec75',1,'turbojpeg.h']]],
['tjcs_5fycck_174',['TJCS_YCCK',['../group___turbo_j_p_e_g.html#gga4f83ad3368e0e29d1957be0efa7c3720a53839e0fe867b76b58d16b0a1a7c598e',1,'turbojpeg.h']]], ['tjcs_5fycck_222',['TJCS_YCCK',['../group___turbo_j_p_e_g.html#gga4f83ad3368e0e29d1957be0efa7c3720a53839e0fe867b76b58d16b0a1a7c598e',1,'turbojpeg.h']]],
['tjerr_5ffatal_175',['TJERR_FATAL',['../group___turbo_j_p_e_g.html#ggafbc17cfa57d0d5d11fea35ac025950feafc9cceeada13122b09e4851e3788039a',1,'turbojpeg.h']]], ['tjerr_5ffatal_223',['TJERR_FATAL',['../group___turbo_j_p_e_g.html#ggafbc17cfa57d0d5d11fea35ac025950feafc9cceeada13122b09e4851e3788039a',1,'turbojpeg.h']]],
['tjerr_5fwarning_176',['TJERR_WARNING',['../group___turbo_j_p_e_g.html#ggafbc17cfa57d0d5d11fea35ac025950fea342dd6e2aedb47bb257b4e7568329b59',1,'turbojpeg.h']]], ['tjerr_5fwarning_224',['TJERR_WARNING',['../group___turbo_j_p_e_g.html#ggafbc17cfa57d0d5d11fea35ac025950fea342dd6e2aedb47bb257b4e7568329b59',1,'turbojpeg.h']]],
['tjpf_5fabgr_177',['TJPF_ABGR',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa1ba1a7f1631dbeaa49a0a85fc4a40081',1,'turbojpeg.h']]], ['tjinit_5fcompress_225',['TJINIT_COMPRESS',['../group___turbo_j_p_e_g.html#gga3850bbee1313e752e667b4eb08b1e086aa45ac279e3dc6ffabc4b0f45864da796',1,'turbojpeg.h']]],
['tjpf_5fargb_178',['TJPF_ARGB',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aae8f846ed9d9de99b6e1dfe448848765c',1,'turbojpeg.h']]], ['tjinit_5fdecompress_226',['TJINIT_DECOMPRESS',['../group___turbo_j_p_e_g.html#gga3850bbee1313e752e667b4eb08b1e086a4b8ca1ef700699b71350700bf95c2167',1,'turbojpeg.h']]],
['tjpf_5fbgr_179',['TJPF_BGR',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aab10624437fb8ef495a0b153e65749839',1,'turbojpeg.h']]], ['tjinit_5ftransform_227',['TJINIT_TRANSFORM',['../group___turbo_j_p_e_g.html#gga3850bbee1313e752e667b4eb08b1e086a8d58a2a4c45b3e0cd349746544a6e0c2',1,'turbojpeg.h']]],
['tjpf_5fbgra_180',['TJPF_BGRA',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aac037ff1845cf9b74bb81a3659c2b9fb4',1,'turbojpeg.h']]], ['tjparam_5farithmetic_228',['TJPARAM_ARITHMETIC',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a1c756757384308145602c040524aebf7',1,'turbojpeg.h']]],
['tjpf_5fbgrx_181',['TJPF_BGRX',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa2a1fbf569ca79897eae886e3376ca4c8',1,'turbojpeg.h']]], ['tjparam_5fbottomup_229',['TJPARAM_BOTTOMUP',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a924657172695ed6cb0b128219546fcce',1,'turbojpeg.h']]],
['tjpf_5fcmyk_182',['TJPF_CMYK',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa7f5100ec44c91994e243f1cf55553f8b',1,'turbojpeg.h']]], ['tjparam_5fcolorspace_230',['TJPARAM_COLORSPACE',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a46a10d46309514907d0c39fcd86c324c',1,'turbojpeg.h']]],
['tjpf_5fgray_183',['TJPF_GRAY',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa5431b54b015337705f13118073711a1a',1,'turbojpeg.h']]], ['tjparam_5fdensityunits_231',['TJPARAM_DENSITYUNITS',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a4c045981bd8a303521a401dbbe1df208',1,'turbojpeg.h']]],
['tjpf_5frgb_184',['TJPF_RGB',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa7ce93230bff449518ce387c17e6ed37c',1,'turbojpeg.h']]], ['tjparam_5ffastdct_232',['TJPARAM_FASTDCT',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a6914692ac6ec5567787d592b7563f627',1,'turbojpeg.h']]],
['tjpf_5frgba_185',['TJPF_RGBA',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa88d2e88fab67f6503cf972e14851cc12',1,'turbojpeg.h']]], ['tjparam_5ffastupsample_233',['TJPARAM_FASTUPSAMPLE',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a0e051ac106f7b7402b690a5daf4869c0',1,'turbojpeg.h']]],
['tjpf_5frgbx_186',['TJPF_RGBX',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa83973bebb7e2dc6fa8bae89ff3f42e01',1,'turbojpeg.h']]], ['tjparam_5fjpegheight_234',['TJPARAM_JPEGHEIGHT',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a8f76673be73f2b659440a9572a65a95f',1,'turbojpeg.h']]],
['tjpf_5funknown_187',['TJPF_UNKNOWN',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa84c1a6cead7952998e2fb895844a21ed',1,'turbojpeg.h']]], ['tjparam_5fjpegwidth_235',['TJPARAM_JPEGWIDTH',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a02ab77fb294a0c9061a78cd424c82dd8',1,'turbojpeg.h']]],
['tjpf_5fxbgr_188',['TJPF_XBGR',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aaf6603b27147de47e212e75dac027b2af',1,'turbojpeg.h']]], ['tjparam_5flossless_236',['TJPARAM_LOSSLESS',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a249f35f0770792b19f995e603bb17c6f',1,'turbojpeg.h']]],
['tjpf_5fxrgb_189',['TJPF_XRGB',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aadae996905efcfa3b42a0bb3bea7f9d84',1,'turbojpeg.h']]], ['tjparam_5flosslesspsv_237',['TJPARAM_LOSSLESSPSV',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82abcc997d40e5bec84817c12b76ef84159',1,'turbojpeg.h']]],
['tjsamp_5f411_190',['TJSAMP_411',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074a28ec62575e5ea295c3fde3001dc628e2',1,'turbojpeg.h']]], ['tjparam_5flosslesspt_238',['TJPARAM_LOSSLESSPT',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a4a6c6f25764ecaf4231a36bff844e46a',1,'turbojpeg.h']]],
['tjsamp_5f420_191',['TJSAMP_420',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074a63085dbf683cfe39e513cdb6343e3737',1,'turbojpeg.h']]], ['tjparam_5fnorealloc_239',['TJPARAM_NOREALLOC',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82ae64ffb358bc7b194fd48e0f27750b29b',1,'turbojpeg.h']]],
['tjsamp_5f422_192',['TJSAMP_422',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074a136130902cc578f11f32429b59368404',1,'turbojpeg.h']]], ['tjparam_5foptimize_240',['TJPARAM_OPTIMIZE',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a8f0af9afc0b36443751f9ee82b760aa6',1,'turbojpeg.h']]],
['tjsamp_5f440_193',['TJSAMP_440',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074accf740e6f3aa6ba20ba922cad13cb974',1,'turbojpeg.h']]], ['tjparam_5fprecision_241',['TJPARAM_PRECISION',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a781db82741934e8cd008d308597c59d8',1,'turbojpeg.h']]],
['tjsamp_5f444_194',['TJSAMP_444',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074afb8da4f44197837bdec0a4f593dacae3',1,'turbojpeg.h']]], ['tjparam_5fprogressive_242',['TJPARAM_PROGRESSIVE',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a1716f242b3859905b4a317dae8cfb75f',1,'turbojpeg.h']]],
['tjsamp_5fgray_195',['TJSAMP_GRAY',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074a3f1c9504842ddc7a48d0f690754b6248',1,'turbojpeg.h']]], ['tjparam_5fquality_243',['TJPARAM_QUALITY',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a0467e8792621f2d817dc2af563d3186c',1,'turbojpeg.h']]],
['tjxop_5fhflip_196',['TJXOP_HFLIP',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866aa0df69776caa30f0fa28e26332d311ce',1,'turbojpeg.h']]], ['tjparam_5frestartblocks_244',['TJPARAM_RESTARTBLOCKS',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a343c72883b7160f23f3ef46fc548a0ec',1,'turbojpeg.h']]],
['tjxop_5fnone_197',['TJXOP_NONE',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866aad88c0366cd3f7d0eac9d7a3fa1c2c27',1,'turbojpeg.h']]], ['tjparam_5frestartrows_245',['TJPARAM_RESTARTROWS',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a714367585952fe5c863f0dba5bd37e5c',1,'turbojpeg.h']]],
['tjxop_5frot180_198',['TJXOP_ROT180',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a140952eb8dd0300accfcc22726d69692',1,'turbojpeg.h']]], ['tjparam_5fscanlimit_246',['TJPARAM_SCANLIMIT',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82ac478910e20ecf61b914f9824d80f8167',1,'turbojpeg.h']]],
['tjxop_5frot270_199',['TJXOP_ROT270',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a3064ee5dfb7f032df332818587567a08',1,'turbojpeg.h']]], ['tjparam_5fstoponwarning_247',['TJPARAM_STOPONWARNING',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a555e2212079fa49b30bcd2879c6c8ddb',1,'turbojpeg.h']]],
['tjxop_5frot90_200',['TJXOP_ROT90',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a43b2bbb23bc4bd548422d43fbe9af128',1,'turbojpeg.h']]], ['tjparam_5fsubsamp_248',['TJPARAM_SUBSAMP',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a2a3494a8215d3de4fdbaeb2ba6f6b03a',1,'turbojpeg.h']]],
['tjxop_5ftranspose_201',['TJXOP_TRANSPOSE',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a31060aed199f886afdd417f80499c32d',1,'turbojpeg.h']]], ['tjparam_5fxdensity_249',['TJPARAM_XDENSITY',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82a4de5c9d7cab5be806143a43c3b0e0877',1,'turbojpeg.h']]],
['tjxop_5ftransverse_202',['TJXOP_TRANSVERSE',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866af3b14d488aea6ece9e5b3df73a74d6a4',1,'turbojpeg.h']]], ['tjparam_5fydensity_250',['TJPARAM_YDENSITY',['../group___turbo_j_p_e_g.html#ggaa0f6be63ba78278299c9f5c12031fe82abda48f2df7eb9b88e2b7621efb017eba',1,'turbojpeg.h']]],
['tjxop_5fvflip_203',['TJXOP_VFLIP',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a324eddfbec53b7e691f61e56929d0d5d',1,'turbojpeg.h']]] ['tjpf_5fabgr_251',['TJPF_ABGR',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa1ba1a7f1631dbeaa49a0a85fc4a40081',1,'turbojpeg.h']]],
['tjpf_5fargb_252',['TJPF_ARGB',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aae8f846ed9d9de99b6e1dfe448848765c',1,'turbojpeg.h']]],
['tjpf_5fbgr_253',['TJPF_BGR',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aab10624437fb8ef495a0b153e65749839',1,'turbojpeg.h']]],
['tjpf_5fbgra_254',['TJPF_BGRA',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aac037ff1845cf9b74bb81a3659c2b9fb4',1,'turbojpeg.h']]],
['tjpf_5fbgrx_255',['TJPF_BGRX',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa2a1fbf569ca79897eae886e3376ca4c8',1,'turbojpeg.h']]],
['tjpf_5fcmyk_256',['TJPF_CMYK',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa7f5100ec44c91994e243f1cf55553f8b',1,'turbojpeg.h']]],
['tjpf_5fgray_257',['TJPF_GRAY',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa5431b54b015337705f13118073711a1a',1,'turbojpeg.h']]],
['tjpf_5frgb_258',['TJPF_RGB',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa7ce93230bff449518ce387c17e6ed37c',1,'turbojpeg.h']]],
['tjpf_5frgba_259',['TJPF_RGBA',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa88d2e88fab67f6503cf972e14851cc12',1,'turbojpeg.h']]],
['tjpf_5frgbx_260',['TJPF_RGBX',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa83973bebb7e2dc6fa8bae89ff3f42e01',1,'turbojpeg.h']]],
['tjpf_5funknown_261',['TJPF_UNKNOWN',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa84c1a6cead7952998e2fb895844a21ed',1,'turbojpeg.h']]],
['tjpf_5fxbgr_262',['TJPF_XBGR',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aaf6603b27147de47e212e75dac027b2af',1,'turbojpeg.h']]],
['tjpf_5fxrgb_263',['TJPF_XRGB',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aadae996905efcfa3b42a0bb3bea7f9d84',1,'turbojpeg.h']]],
['tjsamp_5f411_264',['TJSAMP_411',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074a28ec62575e5ea295c3fde3001dc628e2',1,'turbojpeg.h']]],
['tjsamp_5f420_265',['TJSAMP_420',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074a63085dbf683cfe39e513cdb6343e3737',1,'turbojpeg.h']]],
['tjsamp_5f422_266',['TJSAMP_422',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074a136130902cc578f11f32429b59368404',1,'turbojpeg.h']]],
['tjsamp_5f440_267',['TJSAMP_440',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074accf740e6f3aa6ba20ba922cad13cb974',1,'turbojpeg.h']]],
['tjsamp_5f444_268',['TJSAMP_444',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074afb8da4f44197837bdec0a4f593dacae3',1,'turbojpeg.h']]],
['tjsamp_5fgray_269',['TJSAMP_GRAY',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074a3f1c9504842ddc7a48d0f690754b6248',1,'turbojpeg.h']]],
['tjsamp_5funknown_270',['TJSAMP_UNKNOWN',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074ac124fa8f6cb41147e3d670dfbdfb7173',1,'turbojpeg.h']]],
['tjxop_5fhflip_271',['TJXOP_HFLIP',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866aa0df69776caa30f0fa28e26332d311ce',1,'turbojpeg.h']]],
['tjxop_5fnone_272',['TJXOP_NONE',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866aad88c0366cd3f7d0eac9d7a3fa1c2c27',1,'turbojpeg.h']]],
['tjxop_5frot180_273',['TJXOP_ROT180',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a140952eb8dd0300accfcc22726d69692',1,'turbojpeg.h']]],
['tjxop_5frot270_274',['TJXOP_ROT270',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a3064ee5dfb7f032df332818587567a08',1,'turbojpeg.h']]],
['tjxop_5frot90_275',['TJXOP_ROT90',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a43b2bbb23bc4bd548422d43fbe9af128',1,'turbojpeg.h']]],
['tjxop_5ftranspose_276',['TJXOP_TRANSPOSE',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a31060aed199f886afdd417f80499c32d',1,'turbojpeg.h']]],
['tjxop_5ftransverse_277',['TJXOP_TRANSVERSE',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866af3b14d488aea6ece9e5b3df73a74d6a4',1,'turbojpeg.h']]],
['tjxop_5fvflip_278',['TJXOP_VFLIP',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a324eddfbec53b7e691f61e56929d0d5d',1,'turbojpeg.h']]]
]; ];

View File

@@ -1,31 +1,41 @@
var searchData= var searchData=
[ [
['tjalloc_117',['tjAlloc',['../group___turbo_j_p_e_g.html#gaec627dd4c5f30b7a775a7aea3bec5d83',1,'turbojpeg.h']]], ['tj3alloc_151',['tj3Alloc',['../group___turbo_j_p_e_g.html#gab40a0b231122f536e503e3394569a68d',1,'turbojpeg.h']]],
['tjbufsize_118',['tjBufSize',['../group___turbo_j_p_e_g.html#ga67ac12fee79073242cb216e07c9f1f90',1,'turbojpeg.h']]], ['tj3compress12_152',['tj3Compress12',['../group___turbo_j_p_e_g.html#ga9a1968c384ec7abb6122830253ebf570',1,'turbojpeg.h']]],
['tjbufsizeyuv2_119',['tjBufSizeYUV2',['../group___turbo_j_p_e_g.html#ga5e5aac9e8bcf17049279301e2466474c',1,'turbojpeg.h']]], ['tj3compress16_153',['tj3Compress16',['../group___turbo_j_p_e_g.html#ga77901b71d0471784f318ada31ff4e7bd',1,'turbojpeg.h']]],
['tjcompress2_120',['tjCompress2',['../group___turbo_j_p_e_g.html#gafbdce0112fd78fd38efae841443a9bcf',1,'turbojpeg.h']]], ['tj3compress8_154',['tj3Compress8',['../group___turbo_j_p_e_g.html#ga2cc418a2dab709ad7f30f5b25905f138',1,'turbojpeg.h']]],
['tjcompressfromyuv_121',['tjCompressFromYUV',['../group___turbo_j_p_e_g.html#gab40f5096a72fd7e5bda9d6b58fa37e2e',1,'turbojpeg.h']]], ['tj3compressfromyuv8_155',['tj3CompressFromYUV8',['../group___turbo_j_p_e_g.html#ga041c870d9c669eb3f385c78f4346c43f',1,'turbojpeg.h']]],
['tjcompressfromyuvplanes_122',['tjCompressFromYUVPlanes',['../group___turbo_j_p_e_g.html#ga29ec5dfbd2d84b8724e951d6fa0d5d9e',1,'turbojpeg.h']]], ['tj3compressfromyuvplanes8_156',['tj3CompressFromYUVPlanes8',['../group___turbo_j_p_e_g.html#gac9f5ace3e73805b476c95dda9f8d0cd0',1,'turbojpeg.h']]],
['tjdecodeyuv_123',['tjDecodeYUV',['../group___turbo_j_p_e_g.html#ga97c2cedc1e2bade15a84164c94e503c1',1,'turbojpeg.h']]], ['tj3decodeyuv8_157',['tj3DecodeYUV8',['../group___turbo_j_p_e_g.html#gaa1eb574f38b1c1de43a6c7aafcf68d8c',1,'turbojpeg.h']]],
['tjdecodeyuvplanes_124',['tjDecodeYUVPlanes',['../group___turbo_j_p_e_g.html#ga10e837c07fa9d25770565b237d3898d9',1,'turbojpeg.h']]], ['tj3decodeyuvplanes8_158',['tj3DecodeYUVPlanes8',['../group___turbo_j_p_e_g.html#gad366f1915f82c1ad4e7e37ebe073ca89',1,'turbojpeg.h']]],
['tjdecompress2_125',['tjDecompress2',['../group___turbo_j_p_e_g.html#gae9eccef8b682a48f43a9117c231ed013',1,'turbojpeg.h']]], ['tj3decompress12_159',['tj3Decompress12',['../group___turbo_j_p_e_g.html#ga39b848f01781ad74a5b3941c012b6199',1,'turbojpeg.h']]],
['tjdecompressheader4_126',['tjDecompressHeader4',['../group___turbo_j_p_e_g.html#gac104e6e729f57f195009405949d198dc',1,'turbojpeg.h']]], ['tj3decompress16_160',['tj3Decompress16',['../group___turbo_j_p_e_g.html#gaa074e63f9beb0b3ff42b833a4049df6e',1,'turbojpeg.h']]],
['tjdecompresstoyuv2_127',['tjDecompressToYUV2',['../group___turbo_j_p_e_g.html#ga5a3093e325598c17a9f004323af6fafa',1,'turbojpeg.h']]], ['tj3decompress8_161',['tj3Decompress8',['../group___turbo_j_p_e_g.html#ga1169c7c1a26ec18c9e6122cb8ae64013',1,'turbojpeg.h']]],
['tjdecompresstoyuvplanes_128',['tjDecompressToYUVPlanes',['../group___turbo_j_p_e_g.html#gaa59f901a5258ada5bd0185ad59368540',1,'turbojpeg.h']]], ['tj3decompressheader_162',['tj3DecompressHeader',['../group___turbo_j_p_e_g.html#ga96d2c4b3432f9d88ad14758ae240b8d1',1,'turbojpeg.h']]],
['tjdestroy_129',['tjDestroy',['../group___turbo_j_p_e_g.html#ga75f355fa27225ba1a4ee392c852394d2',1,'turbojpeg.h']]], ['tj3decompresstoyuv8_163',['tj3DecompressToYUV8',['../group___turbo_j_p_e_g.html#ga1e6bf6a19fec3f9fa7534348879d8320',1,'turbojpeg.h']]],
['tjencodeyuv3_130',['tjEncodeYUV3',['../group___turbo_j_p_e_g.html#ga5d619e0a02b71e05a8dffb764f6d7a64',1,'turbojpeg.h']]], ['tj3decompresstoyuvplanes8_164',['tj3DecompressToYUVPlanes8',['../group___turbo_j_p_e_g.html#ga934373482dbbf257f2280505b6ff4fb5',1,'turbojpeg.h']]],
['tjencodeyuvplanes_131',['tjEncodeYUVPlanes',['../group___turbo_j_p_e_g.html#gae2d04c72457fe7f4d60cf78ab1b1feb1',1,'turbojpeg.h']]], ['tj3destroy_165',['tj3Destroy',['../group___turbo_j_p_e_g.html#ga53fbadf4560e95a65b8f5ab81703fe82',1,'turbojpeg.h']]],
['tjfree_132',['tjFree',['../group___turbo_j_p_e_g.html#gaea863d2da0cdb609563aabdf9196514b',1,'turbojpeg.h']]], ['tj3encodeyuv8_166',['tj3EncodeYUV8',['../group___turbo_j_p_e_g.html#ga2a8d50f130bde10f0a04030f8cc59936',1,'turbojpeg.h']]],
['tjgeterrorcode_133',['tjGetErrorCode',['../group___turbo_j_p_e_g.html#ga414feeffbf860ebd31c745df203de410',1,'turbojpeg.h']]], ['tj3encodeyuvplanes8_167',['tj3EncodeYUVPlanes8',['../group___turbo_j_p_e_g.html#gae2e9df38790e9bddc249d04cb158a4cf',1,'turbojpeg.h']]],
['tjgeterrorstr2_134',['tjGetErrorStr2',['../group___turbo_j_p_e_g.html#ga1ead8574f9f39fbafc6b497124e7aafa',1,'turbojpeg.h']]], ['tj3free_168',['tj3Free',['../group___turbo_j_p_e_g.html#gaddb84fb6c81769e9faa0f5a63b296606',1,'turbojpeg.h']]],
['tjgetscalingfactors_135',['tjGetScalingFactors',['../group___turbo_j_p_e_g.html#ga193d0977b3b9966d53a6c402e90899b1',1,'turbojpeg.h']]], ['tj3get_169',['tj3Get',['../group___turbo_j_p_e_g.html#ga34af9ba3183bdf0ec7c8f47bb9a4c84f',1,'turbojpeg.h']]],
['tjinitcompress_136',['tjInitCompress',['../group___turbo_j_p_e_g.html#ga9d63a05fc6d813f4aae06107041a37e8',1,'turbojpeg.h']]], ['tj3geterrorcode_170',['tj3GetErrorCode',['../group___turbo_j_p_e_g.html#gab8c8279f1415fe425ff30dbbc56013bd',1,'turbojpeg.h']]],
['tjinitdecompress_137',['tjInitDecompress',['../group___turbo_j_p_e_g.html#ga52300eac3f3d9ef4bab303bc244f62d3',1,'turbojpeg.h']]], ['tj3geterrorstr_171',['tj3GetErrorStr',['../group___turbo_j_p_e_g.html#gaf2aab0e6dbb3edc57646b0fec25e8bb2',1,'turbojpeg.h']]],
['tjinittransform_138',['tjInitTransform',['../group___turbo_j_p_e_g.html#ga928beff6ac248ceadf01089fc6b41957',1,'turbojpeg.h']]], ['tj3getscalingfactors_172',['tj3GetScalingFactors',['../group___turbo_j_p_e_g.html#ga74397f8e0587d4233182c72f085aaf04',1,'turbojpeg.h']]],
['tjloadimage_139',['tjLoadImage',['../group___turbo_j_p_e_g.html#gaffbd83c375e79f5db4b5c5d8ad4466e7',1,'turbojpeg.h']]], ['tj3init_173',['tj3Init',['../group___turbo_j_p_e_g.html#ga69c09d39f97ec30250ad3605ace7e5df',1,'turbojpeg.h']]],
['tjplaneheight_140',['tjPlaneHeight',['../group___turbo_j_p_e_g.html#ga1a209696c6a80748f20e134b3c64789f',1,'turbojpeg.h']]], ['tj3jpegbufsize_174',['tj3JPEGBufSize',['../group___turbo_j_p_e_g.html#gac6285e58e35a35d871d7162ec5a929c4',1,'turbojpeg.h']]],
['tjplanesizeyuv_141',['tjPlaneSizeYUV',['../group___turbo_j_p_e_g.html#gab4ab7b24f6e797d79abaaa670373961d',1,'turbojpeg.h']]], ['tj3loadimage12_175',['tj3LoadImage12',['../group___turbo_j_p_e_g.html#ga1f03c26892a26d4ce077ed6a4ac40e8f',1,'turbojpeg.h']]],
['tjplanewidth_142',['tjPlaneWidth',['../group___turbo_j_p_e_g.html#ga63fb66bb1e36c74008c4634360becbb1',1,'turbojpeg.h']]], ['tj3loadimage16_176',['tj3LoadImage16',['../group___turbo_j_p_e_g.html#ga638aeba63e0ccb89d472fdbf34224cfc',1,'turbojpeg.h']]],
['tjsaveimage_143',['tjSaveImage',['../group___turbo_j_p_e_g.html#ga6f445b22d8933ae4815b3370a538d879',1,'turbojpeg.h']]], ['tj3loadimage8_177',['tj3LoadImage8',['../group___turbo_j_p_e_g.html#ga565aaae7be3f8ca9099b56655c893251',1,'turbojpeg.h']]],
['tjtransform_144',['tjTransform',['../group___turbo_j_p_e_g.html#ga9cb8abf4cc91881e04a0329b2270be25',1,'turbojpeg.h']]] ['tj3saveimage12_178',['tj3SaveImage12',['../group___turbo_j_p_e_g.html#ga7c64b5106d04267a46aad85f9714ad90',1,'turbojpeg.h']]],
['tj3saveimage16_179',['tj3SaveImage16',['../group___turbo_j_p_e_g.html#ga0fd87851f4266aca24bf4594dd0c0e71',1,'turbojpeg.h']]],
['tj3saveimage8_180',['tj3SaveImage8',['../group___turbo_j_p_e_g.html#gaa4ec838988e469cc15618e4690cc8722',1,'turbojpeg.h']]],
['tj3set_181',['tj3Set',['../group___turbo_j_p_e_g.html#gaddf92640bfee3e8622218c713e77e7db',1,'turbojpeg.h']]],
['tj3setcroppingregion_182',['tj3SetCroppingRegion',['../group___turbo_j_p_e_g.html#gaa49c7bd4c9431667a043cfc93388ba1c',1,'turbojpeg.h']]],
['tj3setscalingfactor_183',['tj3SetScalingFactor',['../group___turbo_j_p_e_g.html#ga89da17ee1e43ff423382cbc145803c75',1,'turbojpeg.h']]],
['tj3transform_184',['tj3Transform',['../group___turbo_j_p_e_g.html#gaff23ba1dcabed456794b844791613920',1,'turbojpeg.h']]],
['tj3yuvbufsize_185',['tj3YUVBufSize',['../group___turbo_j_p_e_g.html#gaaebaa16973a0f550a66eca5765ed0546',1,'turbojpeg.h']]],
['tj3yuvplaneheight_186',['tj3YUVPlaneHeight',['../group___turbo_j_p_e_g.html#ga969767ec8180cc3edd99cf507f87299b',1,'turbojpeg.h']]],
['tj3yuvplanesize_187',['tj3YUVPlaneSize',['../group___turbo_j_p_e_g.html#gacc19d265edce76b46146f59579f9438d',1,'turbojpeg.h']]],
['tj3yuvplanewidth_188',['tj3YUVPlaneWidth',['../group___turbo_j_p_e_g.html#gac99d1933ede1d59fcada9a826e88eb2d',1,'turbojpeg.h']]]
]; ];

View File

@@ -1,4 +1,4 @@
var searchData= var searchData=
[ [
['turbojpeg_204',['TurboJPEG',['../group___turbo_j_p_e_g.html',1,'']]] ['turbojpeg_279',['TurboJPEG',['../group___turbo_j_p_e_g.html',1,'']]]
]; ];

View File

@@ -1,5 +1,5 @@
var searchData= var searchData=
[ [
['tjhandle_163',['tjhandle',['../group___turbo_j_p_e_g.html#ga758d2634ecb4949de7815cba621f5763',1,'turbojpeg.h']]], ['tjhandle_209',['tjhandle',['../group___turbo_j_p_e_g.html#ga758d2634ecb4949de7815cba621f5763',1,'turbojpeg.h']]],
['tjtransform_164',['tjtransform',['../group___turbo_j_p_e_g.html#ga504805ec0161f1b505397ca0118bf8fd',1,'turbojpeg.h']]] ['tjtransform_210',['tjtransform',['../group___turbo_j_p_e_g.html#ga504805ec0161f1b505397ca0118bf8fd',1,'turbojpeg.h']]]
]; ];

View File

@@ -1,4 +1,4 @@
var searchData= var searchData=
[ [
['customfilter_145',['customFilter',['../structtjtransform.html#afd7fc262df33f741e120ef4183202ef5',1,'tjtransform']]] ['customfilter_189',['customFilter',['../structtjtransform.html#afd7fc262df33f741e120ef4183202ef5',1,'tjtransform']]]
]; ];

View File

@@ -1,5 +1,5 @@
var searchData= var searchData=
[ [
['data_146',['data',['../structtjtransform.html#a688fe8f1a8ecc12a538d9e561cf338e3',1,'tjtransform']]], ['data_190',['data',['../structtjtransform.html#a688fe8f1a8ecc12a538d9e561cf338e3',1,'tjtransform']]],
['denom_147',['denom',['../structtjscalingfactor.html#aefbcdf3e9e62274b2d312c695f133ce3',1,'tjscalingfactor']]] ['denom_191',['denom',['../structtjscalingfactor.html#aefbcdf3e9e62274b2d312c695f133ce3',1,'tjscalingfactor']]]
]; ];

View File

@@ -1,4 +1,4 @@
var searchData= var searchData=
[ [
['h_148',['h',['../structtjregion.html#aecefc45a26f4d8b60dd4d825c1710115',1,'tjregion']]] ['h_192',['h',['../structtjregion.html#aecefc45a26f4d8b60dd4d825c1710115',1,'tjregion']]]
]; ];

View File

@@ -1,4 +1,4 @@
var searchData= var searchData=
[ [
['num_149',['num',['../structtjscalingfactor.html#a9b011e57f981ee23083e2c1aa5e640ec',1,'tjscalingfactor']]] ['num_193',['num',['../structtjscalingfactor.html#a9b011e57f981ee23083e2c1aa5e640ec',1,'tjscalingfactor']]]
]; ];

View File

@@ -1,5 +1,5 @@
var searchData= var searchData=
[ [
['op_150',['op',['../structtjtransform.html#a2525aab4ba6978a1c273f74fef50e498',1,'tjtransform']]], ['op_194',['op',['../structtjtransform.html#a2525aab4ba6978a1c273f74fef50e498',1,'tjtransform']]],
['options_151',['options',['../structtjtransform.html#ac0e74655baa4402209a21e1ae481c8f6',1,'tjtransform']]] ['options_195',['options',['../structtjtransform.html#ac0e74655baa4402209a21e1ae481c8f6',1,'tjtransform']]]
]; ];

View File

@@ -1,4 +1,4 @@
var searchData= var searchData=
[ [
['r_152',['r',['../structtjtransform.html#ac324e5e442abec8a961e5bf219db12cf',1,'tjtransform']]] ['r_196',['r',['../structtjtransform.html#ac324e5e442abec8a961e5bf219db12cf',1,'tjtransform']]]
]; ];

View File

@@ -1,10 +1,12 @@
var searchData= var searchData=
[ [
['tjalphaoffset_153',['tjAlphaOffset',['../group___turbo_j_p_e_g.html#ga5af0ab065feefd526debf1e20c43e837',1,'turbojpeg.h']]], ['tjalphaoffset_197',['tjAlphaOffset',['../group___turbo_j_p_e_g.html#ga5af0ab065feefd526debf1e20c43e837',1,'turbojpeg.h']]],
['tjblueoffset_154',['tjBlueOffset',['../group___turbo_j_p_e_g.html#ga84e2e35d3f08025f976ec1ec53693dea',1,'turbojpeg.h']]], ['tjblueoffset_198',['tjBlueOffset',['../group___turbo_j_p_e_g.html#ga84e2e35d3f08025f976ec1ec53693dea',1,'turbojpeg.h']]],
['tjgreenoffset_155',['tjGreenOffset',['../group___turbo_j_p_e_g.html#ga82d6e35da441112a411da41923c0ba2f',1,'turbojpeg.h']]], ['tjgreenoffset_199',['tjGreenOffset',['../group___turbo_j_p_e_g.html#ga82d6e35da441112a411da41923c0ba2f',1,'turbojpeg.h']]],
['tjmcuheight_156',['tjMCUHeight',['../group___turbo_j_p_e_g.html#gabd247bb9fecb393eca57366feb8327bf',1,'turbojpeg.h']]], ['tjmcuheight_200',['tjMCUHeight',['../group___turbo_j_p_e_g.html#gabd247bb9fecb393eca57366feb8327bf',1,'turbojpeg.h']]],
['tjmcuwidth_157',['tjMCUWidth',['../group___turbo_j_p_e_g.html#ga9e61e7cd47a15a173283ba94e781308c',1,'turbojpeg.h']]], ['tjmcuwidth_201',['tjMCUWidth',['../group___turbo_j_p_e_g.html#ga9e61e7cd47a15a173283ba94e781308c',1,'turbojpeg.h']]],
['tjpixelsize_158',['tjPixelSize',['../group___turbo_j_p_e_g.html#gad77cf8fe5b2bfd3cb3f53098146abb4c',1,'turbojpeg.h']]], ['tjpixelsize_202',['tjPixelSize',['../group___turbo_j_p_e_g.html#gad77cf8fe5b2bfd3cb3f53098146abb4c',1,'turbojpeg.h']]],
['tjredoffset_159',['tjRedOffset',['../group___turbo_j_p_e_g.html#gadd9b446742ac8a3923f7992c7988fea8',1,'turbojpeg.h']]] ['tjredoffset_203',['tjRedOffset',['../group___turbo_j_p_e_g.html#gadd9b446742ac8a3923f7992c7988fea8',1,'turbojpeg.h']]],
['tjuncropped_204',['TJUNCROPPED',['../group___turbo_j_p_e_g.html#ga6f192ad58a5a5802e145149d83c643bf',1,'turbojpeg.h']]],
['tjunscaled_205',['TJUNSCALED',['../group___turbo_j_p_e_g.html#ga7880644a0849161ad20933536169ee19',1,'turbojpeg.h']]]
]; ];

View File

@@ -1,4 +1,4 @@
var searchData= var searchData=
[ [
['w_160',['w',['../structtjregion.html#ab6eb73ceef584fc23c8c8097926dce42',1,'tjregion']]] ['w_206',['w',['../structtjregion.html#ab6eb73ceef584fc23c8c8097926dce42',1,'tjregion']]]
]; ];

View File

@@ -1,4 +1,4 @@
var searchData= var searchData=
[ [
['x_161',['x',['../structtjregion.html#a4b6a37a93997091b26a75831fa291ad9',1,'tjregion']]] ['x_207',['x',['../structtjregion.html#a4b6a37a93997091b26a75831fa291ad9',1,'tjregion']]]
]; ];

View File

@@ -1,4 +1,4 @@
var searchData= var searchData=
[ [
['y_162',['y',['../structtjregion.html#a7b3e0c24cfe87acc80e334cafdcf22c2',1,'tjregion']]] ['y_208',['y',['../structtjregion.html#a7b3e0c24cfe87acc80e334cafdcf22c2',1,'tjregion']]]
]; ];

View File

@@ -23,7 +23,7 @@
<tr style="height: 56px;"> <tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">TurboJPEG <div id="projectname">TurboJPEG
&#160;<span id="projectnumber">2.2</span> &#160;<span id="projectnumber">3</span>
</div> </div>
</td> </td>
</tr> </tr>
@@ -157,7 +157,7 @@ Data Fields</h2></td></tr>
</div><div class="memdoc"> </div><div class="memdoc">
<p>The upper boundary of the cropping region. </p> <p>The upper boundary of the cropping region. </p>
<p>This must be evenly divisible by the MCU block height (see <a class="el" href="group___turbo_j_p_e_g.html#gabd247bb9fecb393eca57366feb8327bf" title="MCU block height (in pixels) for a given level of chrominance subsampling.">tjMCUHeight</a>.) </p> <p>For lossless transformation, this must be evenly divisible by the MCU block height (see <a class="el" href="group___turbo_j_p_e_g.html#gabd247bb9fecb393eca57366feb8327bf" title="MCU block height (in pixels) for a given level of chrominance subsampling.">tjMCUHeight</a>.) </p>
</div> </div>
</div> </div>

View File

@@ -23,7 +23,7 @@
<tr style="height: 56px;"> <tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">TurboJPEG <div id="projectname">TurboJPEG
&#160;<span id="projectnumber">2.2</span> &#160;<span id="projectnumber">3</span>
</div> </div>
</td> </td>
</tr> </tr>

View File

@@ -23,7 +23,7 @@
<tr style="height: 56px;"> <tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">TurboJPEG <div id="projectname">TurboJPEG
&#160;<span id="projectnumber">2.2</span> &#160;<span id="projectnumber">3</span>
</div> </div>
</td> </td>
</tr> </tr>
@@ -116,7 +116,7 @@ Data Fields</h2></td></tr>
<tr><td class="paramname">arrayRegion</td><td><a class="el" href="structtjregion.html" title="Cropping region.">tjregion</a> structure containing the width and height of the array pointed to by <code>coeffs</code> as well as its offset relative to the component plane. TurboJPEG implementations may choose to split each component plane into multiple DCT coefficient arrays and call the callback function once for each array.</td></tr> <tr><td class="paramname">arrayRegion</td><td><a class="el" href="structtjregion.html" title="Cropping region.">tjregion</a> structure containing the width and height of the array pointed to by <code>coeffs</code> as well as its offset relative to the component plane. TurboJPEG implementations may choose to split each component plane into multiple DCT coefficient arrays and call the callback function once for each array.</td></tr>
<tr><td class="paramname">planeRegion</td><td><a class="el" href="structtjregion.html" title="Cropping region.">tjregion</a> structure containing the width and height of the component plane to which <code>coeffs</code> belongs</td></tr> <tr><td class="paramname">planeRegion</td><td><a class="el" href="structtjregion.html" title="Cropping region.">tjregion</a> structure containing the width and height of the component plane to which <code>coeffs</code> belongs</td></tr>
<tr><td class="paramname">componentID</td><td>ID number of the component plane to which <code>coeffs</code> belongs. (Y, Cb, and Cr have, respectively, ID's of 0, 1, and 2 in typical JPEG images.)</td></tr> <tr><td class="paramname">componentID</td><td>ID number of the component plane to which <code>coeffs</code> belongs. (Y, Cb, and Cr have, respectively, ID's of 0, 1, and 2 in typical JPEG images.)</td></tr>
<tr><td class="paramname">transformID</td><td>ID number of the transformed image to which <code>coeffs</code> belongs. This is the same as the index of the transform in the <code>transforms</code> array that was passed to <a class="el" href="group___turbo_j_p_e_g.html#ga9cb8abf4cc91881e04a0329b2270be25" title="Losslessly transform a JPEG image into another JPEG image.">tjTransform()</a>.</td></tr> <tr><td class="paramname">transformID</td><td>ID number of the transformed image to which <code>coeffs</code> belongs. This is the same as the index of the transform in the <code>transforms</code> array that was passed to <a class="el" href="group___turbo_j_p_e_g.html#gaff23ba1dcabed456794b844791613920" title="Losslessly transform a JPEG image into another JPEG image.">tj3Transform()</a>.</td></tr>
<tr><td class="paramname">transform</td><td>a pointer to a <a class="el" href="structtjtransform.html" title="Lossless transform.">tjtransform</a> structure that specifies the parameters and/or cropping region for this transform</td></tr> <tr><td class="paramname">transform</td><td>a pointer to a <a class="el" href="structtjtransform.html" title="Lossless transform.">tjtransform</a> structure that specifies the parameters and/or cropping region for this transform</td></tr>
</table> </table>
</dd> </dd>

View File

@@ -1,5 +1,5 @@
PROJECT_NAME = TurboJPEG PROJECT_NAME = TurboJPEG
PROJECT_NUMBER = 2.2 PROJECT_NUMBER = 3
OUTPUT_DIRECTORY = doc/ OUTPUT_DIRECTORY = doc/
USE_WINDOWS_ENCODING = NO USE_WINDOWS_ENCODING = NO
OPTIMIZE_OUTPUT_FOR_C = YES OPTIMIZE_OUTPUT_FOR_C = YES

View File

@@ -33,24 +33,6 @@ target_link_libraries(cjpeg_fuzzer${FUZZER_SUFFIX} ${FUZZ_LIBRARY} jpeg-static)
install(TARGETS cjpeg_fuzzer${FUZZER_SUFFIX} RUNTIME DESTINATION install(TARGETS cjpeg_fuzzer${FUZZER_SUFFIX} RUNTIME DESTINATION
${FUZZ_BINDIR}) ${FUZZ_BINDIR})
add_executable(cjpeg12_fuzzer${FUZZER_SUFFIX} cjpeg12.cc ../cdjpeg.c ../rdbmp.c
../rdgif.c ../rdppm.c ../rdswitch.c ../rdtarga.c)
set_property(TARGET cjpeg12_fuzzer${FUZZER_SUFFIX} PROPERTY COMPILE_FLAGS
${COMPILE_FLAGS})
target_link_libraries(cjpeg12_fuzzer${FUZZER_SUFFIX} ${FUZZ_LIBRARY}
jpeg-static)
install(TARGETS cjpeg12_fuzzer${FUZZER_SUFFIX} RUNTIME DESTINATION
${FUZZ_BINDIR})
add_executable(cjpeg16_fuzzer${FUZZER_SUFFIX} cjpeg16.cc ../cdjpeg.c ../rdbmp.c
../rdgif.c ../rdppm.c ../rdswitch.c ../rdtarga.c)
set_property(TARGET cjpeg16_fuzzer${FUZZER_SUFFIX} PROPERTY COMPILE_FLAGS
${COMPILE_FLAGS})
target_link_libraries(cjpeg16_fuzzer${FUZZER_SUFFIX} ${FUZZ_LIBRARY}
jpeg-static)
install(TARGETS cjpeg16_fuzzer${FUZZER_SUFFIX} RUNTIME DESTINATION
${FUZZ_BINDIR})
macro(add_fuzz_target target source_file) macro(add_fuzz_target target source_file)
add_executable(${target}_fuzzer${FUZZER_SUFFIX} ${source_file}) add_executable(${target}_fuzzer${FUZZER_SUFFIX} ${source_file})
target_link_libraries(${target}_fuzzer${FUZZER_SUFFIX} ${FUZZ_LIBRARY} target_link_libraries(${target}_fuzzer${FUZZER_SUFFIX} ${FUZZ_LIBRARY}
@@ -65,6 +47,12 @@ add_fuzz_target(compress_yuv compress_yuv.cc)
add_fuzz_target(compress_lossless compress_lossless.cc) add_fuzz_target(compress_lossless compress_lossless.cc)
add_fuzz_target(compress12 compress12.cc)
add_fuzz_target(compress12_lossless compress12.cc)
add_fuzz_target(compress16_lossless compress16_lossless.cc)
# NOTE: This target is named libjpeg_turbo_fuzzer instead of decompress_fuzzer # NOTE: This target is named libjpeg_turbo_fuzzer instead of decompress_fuzzer
# in order to preserve the corpora from Google's OSS-Fuzz target for # in order to preserve the corpora from Google's OSS-Fuzz target for
# libjpeg-turbo, which this target replaces. # libjpeg-turbo, which this target replaces.

View File

@@ -18,11 +18,12 @@ make "-j$(nproc)" "--load-average=$(nproc)"
make install make install
cp $SRC/compress_fuzzer_seed_corpus.zip $OUT/cjpeg_fuzzer${FUZZER_SUFFIX}_seed_corpus.zip cp $SRC/compress_fuzzer_seed_corpus.zip $OUT/cjpeg_fuzzer${FUZZER_SUFFIX}_seed_corpus.zip
cp $SRC/compress_fuzzer_seed_corpus.zip $OUT/cjpeg12_fuzzer${FUZZER_SUFFIX}_seed_corpus.zip
cp $SRC/compress_fuzzer_seed_corpus.zip $OUT/cjpeg16_fuzzer${FUZZER_SUFFIX}_seed_corpus.zip
cp $SRC/compress_fuzzer_seed_corpus.zip $OUT/compress_fuzzer${FUZZER_SUFFIX}_seed_corpus.zip cp $SRC/compress_fuzzer_seed_corpus.zip $OUT/compress_fuzzer${FUZZER_SUFFIX}_seed_corpus.zip
cp $SRC/compress_fuzzer_seed_corpus.zip $OUT/compress_yuv_fuzzer${FUZZER_SUFFIX}_seed_corpus.zip cp $SRC/compress_fuzzer_seed_corpus.zip $OUT/compress_yuv_fuzzer${FUZZER_SUFFIX}_seed_corpus.zip
cp $SRC/compress_fuzzer_seed_corpus.zip $OUT/compress_lossless_fuzzer${FUZZER_SUFFIX}_seed_corpus.zip cp $SRC/compress_fuzzer_seed_corpus.zip $OUT/compress_lossless_fuzzer${FUZZER_SUFFIX}_seed_corpus.zip
cp $SRC/compress_fuzzer_seed_corpus.zip $OUT/compress12_fuzzer${FUZZER_SUFFIX}_seed_corpus.zip
cp $SRC/compress_fuzzer_seed_corpus.zip $OUT/compress12_lossless_fuzzer${FUZZER_SUFFIX}_seed_corpus.zip
cp $SRC/compress_fuzzer_seed_corpus.zip $OUT/compress16_lossless_fuzzer${FUZZER_SUFFIX}_seed_corpus.zip
cp $SRC/decompress_fuzzer_seed_corpus.zip $OUT/libjpeg_turbo_fuzzer${FUZZER_SUFFIX}_seed_corpus.zip cp $SRC/decompress_fuzzer_seed_corpus.zip $OUT/libjpeg_turbo_fuzzer${FUZZER_SUFFIX}_seed_corpus.zip
cp $SRC/decompress_fuzzer_seed_corpus.zip $OUT/decompress_yuv_fuzzer${FUZZER_SUFFIX}_seed_corpus.zip cp $SRC/decompress_fuzzer_seed_corpus.zip $OUT/decompress_yuv_fuzzer${FUZZER_SUFFIX}_seed_corpus.zip
cp $SRC/decompress_fuzzer_seed_corpus.zip $OUT/transform_fuzzer${FUZZER_SUFFIX}_seed_corpus.zip cp $SRC/decompress_fuzzer_seed_corpus.zip $OUT/transform_fuzzer${FUZZER_SUFFIX}_seed_corpus.zip

View File

@@ -1,93 +0,0 @@
/*
* Copyright (C)2021-2022 D. R. Commander. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* - Neither the name of the libjpeg-turbo Project nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS",
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
/* This fuzz target wraps cjpeg in order to test esoteric compression options
as well as the GIF and Targa readers. */
#define main cjpeg_main
#define CJPEG_FUZZER
extern "C" {
#include "../cjpeg.c"
}
#undef main
#undef CJPEG_FUZZER
#include <stdint.h>
#include <unistd.h>
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
{
char filename[FILENAME_MAX] = { 0 };
char *argv1[] = {
(char *)"cjpeg", (char *)"-precision", (char *)"12",
(char *)"-dct", (char *)"int", (char *)"-memdst",
(char *)"-quality", (char *)"100,99,98", (char *)"-restart", (char *)"2",
(char *)"-sample", (char *)"4x1,2x2,1x2", NULL
};
char *argv2[] = {
(char *)"cjpeg", (char *)"-precision", (char *)"12",
(char *)"-dct", (char *)"fast", (char *)"-memdst",
(char *)"-quality", (char *)"90,80,70", (char *)"-rgb",
(char *)"-sample", (char *)"2x2", (char *)"-smooth", (char *)"50", NULL
};
char *argv3[] = {
(char *)"cjpeg", (char *)"-precision", (char *)"12",
(char *)"-lossless", (char *)"1,4", NULL
};
char *argv4[] = {
(char *)"cjpeg", (char *)"-precision", (char *)"12",
(char *)"-lossless", (char *)"4,0", NULL
};
int fd = -1;
#if defined(__has_feature) && __has_feature(memory_sanitizer)
char env[18] = "JSIMD_FORCENONE=1";
/* The libjpeg-turbo SIMD extensions produce false positives with
MemorySanitizer. */
putenv(env);
#endif
snprintf(filename, FILENAME_MAX, "/tmp/libjpeg-turbo_cjpeg12_fuzz.XXXXXX");
if ((fd = mkstemp(filename)) < 0 || write(fd, data, size) < 0)
goto bailout;
argv1[12] = argv2[13] = argv3[5] = argv4[5] = filename;
cjpeg_main(13, argv1);
cjpeg_main(14, argv2);
cjpeg_main(6, argv3);
cjpeg_main(6, argv4);
bailout:
if (fd >= 0) {
close(fd);
if (strlen(filename) > 0) unlink(filename);
}
return 0;
}

View File

@@ -1,79 +0,0 @@
/*
* Copyright (C)2021-2022 D. R. Commander. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* - Neither the name of the libjpeg-turbo Project nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS",
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
/* This fuzz target wraps cjpeg in order to test esoteric compression options
as well as the GIF and Targa readers. */
#define main cjpeg_main
#define CJPEG_FUZZER
extern "C" {
#include "../cjpeg.c"
}
#undef main
#undef CJPEG_FUZZER
#include <stdint.h>
#include <unistd.h>
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
{
char filename[FILENAME_MAX] = { 0 };
char *argv1[] = {
(char *)"cjpeg", (char *)"-precision", (char *)"16",
(char *)"-lossless", (char *)"1,4", NULL
};
char *argv2[] = {
(char *)"cjpeg", (char *)"-precision", (char *)"16",
(char *)"-lossless", (char *)"4,0", NULL
};
int fd = -1;
#if defined(__has_feature) && __has_feature(memory_sanitizer)
char env[18] = "JSIMD_FORCENONE=1";
/* The libjpeg-turbo SIMD extensions produce false positives with
MemorySanitizer. */
putenv(env);
#endif
snprintf(filename, FILENAME_MAX, "/tmp/libjpeg-turbo_cjpeg16_fuzz.XXXXXX");
if ((fd = mkstemp(filename)) < 0 || write(fd, data, size) < 0)
goto bailout;
argv1[5] = argv2[5] = filename;
cjpeg_main(6, argv1);
cjpeg_main(6, argv2);
bailout:
if (fd >= 0) {
close(fd);
if (strlen(filename) > 0) unlink(filename);
}
return 0;
}

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (C)2021 D. R. Commander. All Rights Reserved. * Copyright (C)2021, 2023 D. R. Commander. All Rights Reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met: * modification, are permitted provided that the following conditions are met:
@@ -35,8 +35,6 @@
#define NUMTESTS 7 #define NUMTESTS 7
/* Private flag that triggers different TurboJPEG API behavior when fuzzing */
#define TJFLAG_FUZZING (1 << 30)
struct test { struct test {
@@ -73,37 +71,40 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
if ((fd = mkstemp(filename)) < 0 || write(fd, data, size) < 0) if ((fd = mkstemp(filename)) < 0 || write(fd, data, size) < 0)
goto bailout; goto bailout;
if ((handle = tjInitCompress()) == NULL) if ((handle = tj3Init(TJINIT_COMPRESS)) == NULL)
goto bailout; goto bailout;
for (ti = 0; ti < NUMTESTS; ti++) { for (ti = 0; ti < NUMTESTS; ti++) {
int flags = TJFLAG_FUZZING, sum = 0, pf = tests[ti].pf; int sum = 0, pf = tests[ti].pf;
unsigned long dstSize = 0, maxBufSize; size_t dstSize = 0, maxBufSize;
/* Test non-default compression options on specific iterations. */ /* Test non-default compression options on specific iterations. */
if (ti == 0) tj3Set(handle, TJPARAM_BOTTOMUP, ti == 0);
flags |= TJFLAG_BOTTOMUP | TJFLAG_ACCURATEDCT; tj3Set(handle, TJPARAM_FASTDCT, ti == 1);
else if (ti == 1) tj3Set(handle, TJPARAM_OPTIMIZE, ti == 6);
flags |= TJFLAG_PROGRESSIVE; tj3Set(handle, TJPARAM_PROGRESSIVE, ti == 1 || ti == 3);
if (ti != 2) tj3Set(handle, TJPARAM_ARITHMETIC, ti == 2 || ti == 3);
flags |= TJFLAG_NOREALLOC; tj3Set(handle, TJPARAM_NOREALLOC, ti != 2);
tj3Set(handle, TJPARAM_RESTARTROWS, ti == 1 || ti == 2 ? 2 : 0);
/* tjLoadImage() refuses to load images larger than 1 Megapixel when tj3Set(handle, TJPARAM_MAXPIXELS, 1048576);
FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION is defined (yes, that's a dirty /* tj3LoadImage8() will refuse to load images larger than 1 Megapixel, so
hack), so we don't need to check the width and height here. */ we don't need to check the width and height here. */
if ((srcBuf = tjLoadImage(filename, &width, 1, &height, &pf, if ((srcBuf = tj3LoadImage8(handle, filename, &width, 1, &height,
flags)) == NULL) &pf)) == NULL)
continue; continue;
maxBufSize = tjBufSize(width, height, tests[ti].subsamp); maxBufSize = tj3JPEGBufSize(width, height, tests[ti].subsamp);
if (flags & TJFLAG_NOREALLOC) { if (tj3Get(handle, TJPARAM_NOREALLOC)) {
if ((dstBuf = (unsigned char *)malloc(maxBufSize)) == NULL) if ((dstBuf = (unsigned char *)malloc(maxBufSize)) == NULL)
goto bailout; goto bailout;
} else } else
dstBuf = NULL; dstBuf = NULL;
if (tjCompress2(handle, srcBuf, width, 0, height, pf, &dstBuf, &dstSize, tj3Set(handle, TJPARAM_SUBSAMP, tests[ti].subsamp);
tests[ti].subsamp, tests[ti].quality, flags) == 0) { tj3Set(handle, TJPARAM_QUALITY, tests[ti].quality);
if (tj3Compress8(handle, srcBuf, width, 0, height, pf, &dstBuf,
&dstSize) == 0) {
/* Touch all of the output pixels in order to catch uninitialized reads /* Touch all of the output pixels in order to catch uninitialized reads
when using MemorySanitizer. */ when using MemorySanitizer. */
for (i = 0; i < dstSize; i++) for (i = 0; i < dstSize; i++)
@@ -112,7 +113,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
free(dstBuf); free(dstBuf);
dstBuf = NULL; dstBuf = NULL;
tjFree(srcBuf); tj3Free(srcBuf);
srcBuf = NULL; srcBuf = NULL;
/* Prevent the code above from being optimized out. This test should never /* Prevent the code above from being optimized out. This test should never
@@ -123,11 +124,11 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
bailout: bailout:
free(dstBuf); free(dstBuf);
tjFree(srcBuf); tj3Free(srcBuf);
if (fd >= 0) { if (fd >= 0) {
close(fd); close(fd);
if (strlen(filename) > 0) unlink(filename); if (strlen(filename) > 0) unlink(filename);
} }
if (handle) tjDestroy(handle); tj3Destroy(handle);
return 0; return 0;
} }

133
fuzz/compress12.cc Normal file
View File

@@ -0,0 +1,133 @@
/*
* Copyright (C)2021, 2023 D. R. Commander. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* - Neither the name of the libjpeg-turbo Project nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS",
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#include <turbojpeg.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <unistd.h>
#define NUMTESTS 7
struct test {
enum TJPF pf;
enum TJSAMP subsamp;
int quality;
};
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
{
tjhandle handle = NULL;
short *srcBuf = NULL;
unsigned char *dstBuf = NULL;
int width = 0, height = 0, fd = -1, i, ti;
char filename[FILENAME_MAX] = { 0 };
struct test tests[NUMTESTS] = {
{ TJPF_RGB, TJSAMP_444, 100 },
{ TJPF_BGR, TJSAMP_422, 90 },
{ TJPF_RGBX, TJSAMP_420, 80 },
{ TJPF_BGRA, TJSAMP_411, 70 },
{ TJPF_XRGB, TJSAMP_GRAY, 60 },
{ TJPF_GRAY, TJSAMP_GRAY, 50 },
{ TJPF_CMYK, TJSAMP_440, 40 }
};
#if defined(__has_feature) && __has_feature(memory_sanitizer)
char env[18] = "JSIMD_FORCENONE=1";
/* The libjpeg-turbo SIMD extensions produce false positives with
MemorySanitizer. */
putenv(env);
#endif
snprintf(filename, FILENAME_MAX, "/tmp/libjpeg-turbo_compress12_fuzz.XXXXXX");
if ((fd = mkstemp(filename)) < 0 || write(fd, data, size) < 0)
goto bailout;
if ((handle = tj3Init(TJINIT_COMPRESS)) == NULL)
goto bailout;
for (ti = 0; ti < NUMTESTS; ti++) {
int sum = 0, pf = tests[ti].pf;
size_t dstSize = 0, maxBufSize;
/* Test non-default compression options on specific iterations. */
tj3Set(handle, TJPARAM_BOTTOMUP, ti == 0);
tj3Set(handle, TJPARAM_FASTDCT, ti == 0);
tj3Set(handle, TJPARAM_PROGRESSIVE, ti == 1 || ti == 3);
tj3Set(handle, TJPARAM_NOREALLOC, ti != 2);
tj3Set(handle, TJPARAM_RESTARTROWS, ti == 1 || ti == 2 ? 2 : 0);
tj3Set(handle, TJPARAM_MAXPIXELS, 1048576);
/* tj3LoadImage12() will refuse to load images larger than 1 Megapixel, so
we don't need to check the width and height here. */
if ((srcBuf = tj3LoadImage12(handle, filename, &width, 1, &height,
&pf)) == NULL)
continue;
maxBufSize = tj3JPEGBufSize(width, height, tests[ti].subsamp);
if (tj3Get(handle, TJPARAM_NOREALLOC)) {
if ((dstBuf = (unsigned char *)malloc(maxBufSize)) == NULL)
goto bailout;
} else
dstBuf = NULL;
tj3Set(handle, TJPARAM_SUBSAMP, tests[ti].subsamp);
tj3Set(handle, TJPARAM_QUALITY, tests[ti].quality);
if (tj3Compress12(handle, srcBuf, width, 0, height, pf, &dstBuf,
&dstSize) == 0) {
/* Touch all of the output pixels in order to catch uninitialized reads
when using MemorySanitizer. */
for (i = 0; i < dstSize; i++)
sum += dstBuf[i];
}
free(dstBuf);
dstBuf = NULL;
tj3Free(srcBuf);
srcBuf = NULL;
/* Prevent the code above from being optimized out. This test should never
be true, but the compiler doesn't know that. */
if (sum > 255 * maxBufSize)
goto bailout;
}
bailout:
free(dstBuf);
tj3Free(srcBuf);
if (fd >= 0) {
close(fd);
if (strlen(filename) > 0) unlink(filename);
}
tj3Destroy(handle);
return 0;
}

131
fuzz/compress12_lossless.cc Normal file
View File

@@ -0,0 +1,131 @@
/*
* Copyright (C)2021-2023 D. R. Commander. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* - Neither the name of the libjpeg-turbo Project nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS",
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#include <turbojpeg.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <unistd.h>
#define NUMTESTS 7
struct test {
enum TJPF pf;
int psv, pt;
};
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
{
tjhandle handle = NULL;
short *srcBuf = NULL;
unsigned char *dstBuf = NULL;
int width = 0, height = 0, fd = -1, i, ti;
char filename[FILENAME_MAX] = { 0 };
struct test tests[NUMTESTS] = {
{ TJPF_RGB, 1, 0 },
{ TJPF_BGR, 2, 2 },
{ TJPF_RGBX, 3, 4 },
{ TJPF_BGRA, 4, 7 },
{ TJPF_XRGB, 5, 5 },
{ TJPF_GRAY, 6, 3 },
{ TJPF_CMYK, 7, 0 }
};
#if defined(__has_feature) && __has_feature(memory_sanitizer)
char env[18] = "JSIMD_FORCENONE=1";
/* The libjpeg-turbo SIMD extensions produce false positives with
MemorySanitizer. */
putenv(env);
#endif
snprintf(filename, FILENAME_MAX, "/tmp/libjpeg-turbo_compress_fuzz.XXXXXX");
if ((fd = mkstemp(filename)) < 0 || write(fd, data, size) < 0)
goto bailout;
if ((handle = tj3Init(TJINIT_COMPRESS)) == NULL)
goto bailout;
for (ti = 0; ti < NUMTESTS; ti++) {
int sum = 0, pf = tests[ti].pf;
size_t dstSize = 0, maxBufSize;
/* Test non-default compression options on specific iterations. */
tj3Set(handle, TJPARAM_BOTTOMUP, ti == 0);
tj3Set(handle, TJPARAM_NOREALLOC, ti != 2);
tj3Set(handle, TJPARAM_RESTARTROWS, ti == 0 || ti == 6 ? 1 : 0);
tj3Set(handle, TJPARAM_MAXPIXELS, 1048576);
/* tj3LoadImage12() will refuse to load images larger than 1 Megapixel, so
we don't need to check the width and height here. */
if ((srcBuf = tj3LoadImage12(handle, filename, &width, 1, &height,
&pf)) == NULL)
continue;
maxBufSize = tj3JPEGBufSize(width, height, TJSAMP_444);
if (tj3Get(handle, TJPARAM_NOREALLOC)) {
if ((dstBuf = (unsigned char *)malloc(maxBufSize)) == NULL)
goto bailout;
} else
dstBuf = NULL;
tj3Set(handle, TJPARAM_LOSSLESS, 1);
tj3Set(handle, TJPARAM_LOSSLESSPSV, tests[ti].psv);
tj3Set(handle, TJPARAM_LOSSLESSPT, tests[ti].pt);
if (tj3Compress12(handle, srcBuf, width, 0, height, pf, &dstBuf,
&dstSize) == 0) {
/* Touch all of the output pixels in order to catch uninitialized reads
when using MemorySanitizer. */
for (i = 0; i < dstSize; i++)
sum += dstBuf[i];
}
free(dstBuf);
dstBuf = NULL;
tj3Free(srcBuf);
srcBuf = NULL;
/* Prevent the code above from being optimized out. This test should never
be true, but the compiler doesn't know that. */
if (sum > 255 * maxBufSize)
goto bailout;
}
bailout:
free(dstBuf);
tj3Free(srcBuf);
if (fd >= 0) {
close(fd);
if (strlen(filename) > 0) unlink(filename);
}
tj3Destroy(handle);
return 0;
}

131
fuzz/compress16_lossless.cc Normal file
View File

@@ -0,0 +1,131 @@
/*
* Copyright (C)2021-2023 D. R. Commander. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* - Neither the name of the libjpeg-turbo Project nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS",
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#include <turbojpeg.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <unistd.h>
#define NUMTESTS 7
struct test {
enum TJPF pf;
int psv, pt;
};
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
{
tjhandle handle = NULL;
unsigned short *srcBuf = NULL;
unsigned char *dstBuf = NULL;
int width = 0, height = 0, fd = -1, i, ti;
char filename[FILENAME_MAX] = { 0 };
struct test tests[NUMTESTS] = {
{ TJPF_RGB, 1, 0 },
{ TJPF_BGR, 2, 2 },
{ TJPF_RGBX, 3, 4 },
{ TJPF_BGRA, 4, 7 },
{ TJPF_XRGB, 5, 5 },
{ TJPF_GRAY, 6, 3 },
{ TJPF_CMYK, 7, 0 }
};
#if defined(__has_feature) && __has_feature(memory_sanitizer)
char env[18] = "JSIMD_FORCENONE=1";
/* The libjpeg-turbo SIMD extensions produce false positives with
MemorySanitizer. */
putenv(env);
#endif
snprintf(filename, FILENAME_MAX, "/tmp/libjpeg-turbo_compress_fuzz.XXXXXX");
if ((fd = mkstemp(filename)) < 0 || write(fd, data, size) < 0)
goto bailout;
if ((handle = tj3Init(TJINIT_COMPRESS)) == NULL)
goto bailout;
for (ti = 0; ti < NUMTESTS; ti++) {
int sum = 0, pf = tests[ti].pf;
size_t dstSize = 0, maxBufSize;
/* Test non-default compression options on specific iterations. */
tj3Set(handle, TJPARAM_BOTTOMUP, ti == 0);
tj3Set(handle, TJPARAM_NOREALLOC, ti != 2);
tj3Set(handle, TJPARAM_RESTARTROWS, ti == 0 || ti == 6 ? 1 : 0);
tj3Set(handle, TJPARAM_MAXPIXELS, 1048576);
/* tj3LoadImage16() will refuse to load images larger than 1 Megapixel, so
we don't need to check the width and height here. */
if ((srcBuf = tj3LoadImage16(handle, filename, &width, 1, &height,
&pf)) == NULL)
continue;
maxBufSize = tj3JPEGBufSize(width, height, TJSAMP_444);
if (tj3Get(handle, TJPARAM_NOREALLOC)) {
if ((dstBuf = (unsigned char *)malloc(maxBufSize)) == NULL)
goto bailout;
} else
dstBuf = NULL;
tj3Set(handle, TJPARAM_LOSSLESS, 1);
tj3Set(handle, TJPARAM_LOSSLESSPSV, tests[ti].psv);
tj3Set(handle, TJPARAM_LOSSLESSPT, tests[ti].pt);
if (tj3Compress16(handle, srcBuf, width, 0, height, pf, &dstBuf,
&dstSize) == 0) {
/* Touch all of the output pixels in order to catch uninitialized reads
when using MemorySanitizer. */
for (i = 0; i < dstSize; i++)
sum += dstBuf[i];
}
free(dstBuf);
dstBuf = NULL;
tj3Free(srcBuf);
srcBuf = NULL;
/* Prevent the code above from being optimized out. This test should never
be true, but the compiler doesn't know that. */
if (sum > 255 * maxBufSize)
goto bailout;
}
bailout:
free(dstBuf);
tj3Free(srcBuf);
if (fd >= 0) {
close(fd);
if (strlen(filename) > 0) unlink(filename);
}
tj3Destroy(handle);
return 0;
}

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (C)2021-2022 D. R. Commander. All Rights Reserved. * Copyright (C)2021-2023 D. R. Commander. All Rights Reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met: * modification, are permitted provided that the following conditions are met:
@@ -35,8 +35,6 @@
#define NUMTESTS 7 #define NUMTESTS 7
/* Private flag that triggers different TurboJPEG API behavior when fuzzing */
#define TJFLAG_FUZZING (1 << 30)
struct test { struct test {
@@ -72,36 +70,37 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
if ((fd = mkstemp(filename)) < 0 || write(fd, data, size) < 0) if ((fd = mkstemp(filename)) < 0 || write(fd, data, size) < 0)
goto bailout; goto bailout;
if ((handle = tjInitCompress()) == NULL) if ((handle = tj3Init(TJINIT_COMPRESS)) == NULL)
goto bailout; goto bailout;
for (ti = 0; ti < NUMTESTS; ti++) { for (ti = 0; ti < NUMTESTS; ti++) {
int flags = TJFLAG_FUZZING | TJFLAG_LOSSLESS, sum = 0, pf = tests[ti].pf; int sum = 0, pf = tests[ti].pf;
unsigned long dstSize = 0, maxBufSize; size_t dstSize = 0, maxBufSize;
/* Test non-default compression options on specific iterations. */ /* Test non-default compression options on specific iterations. */
if (ti == 0) tj3Set(handle, TJPARAM_BOTTOMUP, ti == 0);
flags |= TJFLAG_BOTTOMUP; tj3Set(handle, TJPARAM_NOREALLOC, ti != 2);
if (ti != 2) tj3Set(handle, TJPARAM_RESTARTROWS, ti == 0 || ti == 6 ? 1 : 0);
flags |= TJFLAG_NOREALLOC;
/* tjLoadImage() refuses to load images larger than 1 Megapixel when tj3Set(handle, TJPARAM_MAXPIXELS, 1048576);
FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION is defined (yes, that's a dirty /* tj3LoadImage8() will refuse to load images larger than 1 Megapixel, so
hack), so we don't need to check the width and height here. */ we don't need to check the width and height here. */
if ((srcBuf = tjLoadImage(filename, &width, 1, &height, &pf, if ((srcBuf = tj3LoadImage8(handle, filename, &width, 1, &height,
flags)) == NULL) &pf)) == NULL)
continue; continue;
maxBufSize = tjBufSize(width, height, TJSAMP_444); maxBufSize = tj3JPEGBufSize(width, height, TJSAMP_444);
if (flags & TJFLAG_NOREALLOC) { if (tj3Get(handle, TJPARAM_NOREALLOC)) {
if ((dstBuf = (unsigned char *)malloc(maxBufSize)) == NULL) if ((dstBuf = (unsigned char *)malloc(maxBufSize)) == NULL)
goto bailout; goto bailout;
} else } else
dstBuf = NULL; dstBuf = NULL;
if (tjCompress2(handle, srcBuf, width, 0, height, pf, &dstBuf, &dstSize, tj3Set(handle, TJPARAM_LOSSLESS, 1);
TJSAMP_444, tests[ti].psv * 10 + tests[ti].pt, tj3Set(handle, TJPARAM_LOSSLESSPSV, tests[ti].psv);
flags) == 0) { tj3Set(handle, TJPARAM_LOSSLESSPT, tests[ti].pt);
if (tj3Compress8(handle, srcBuf, width, 0, height, pf, &dstBuf,
&dstSize) == 0) {
/* Touch all of the output pixels in order to catch uninitialized reads /* Touch all of the output pixels in order to catch uninitialized reads
when using MemorySanitizer. */ when using MemorySanitizer. */
for (i = 0; i < dstSize; i++) for (i = 0; i < dstSize; i++)
@@ -110,7 +109,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
free(dstBuf); free(dstBuf);
dstBuf = NULL; dstBuf = NULL;
tjFree(srcBuf); tj3Free(srcBuf);
srcBuf = NULL; srcBuf = NULL;
/* Prevent the code above from being optimized out. This test should never /* Prevent the code above from being optimized out. This test should never
@@ -121,11 +120,11 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
bailout: bailout:
free(dstBuf); free(dstBuf);
tjFree(srcBuf); tj3Free(srcBuf);
if (fd >= 0) { if (fd >= 0) {
close(fd); close(fd);
if (strlen(filename) > 0) unlink(filename); if (strlen(filename) > 0) unlink(filename);
} }
if (handle) tjDestroy(handle); tj3Destroy(handle);
return 0; return 0;
} }

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (C)2021-2022 D. R. Commander. All Rights Reserved. * Copyright (C)2021-2023 D. R. Commander. All Rights Reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met: * modification, are permitted provided that the following conditions are met:
@@ -35,8 +35,6 @@
#define NUMTESTS 6 #define NUMTESTS 6
/* Private flag that triggers different TurboJPEG API behavior when fuzzing */
#define TJFLAG_FUZZING (1 << 30)
struct test { struct test {
@@ -60,58 +58,54 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
{ TJPF_BGR, TJSAMP_GRAY, 60 }, { TJPF_BGR, TJSAMP_GRAY, 60 },
{ TJPF_GRAY, TJSAMP_GRAY, 50 } { TJPF_GRAY, TJSAMP_GRAY, 50 }
}; };
char restartEnv[13] = "TJ_RESTART=0";
#if defined(__has_feature) && __has_feature(memory_sanitizer) #if defined(__has_feature) && __has_feature(memory_sanitizer)
char simdEnv[18] = "JSIMD_FORCENONE=1"; char env[18] = "JSIMD_FORCENONE=1";
/* The libjpeg-turbo SIMD extensions produce false positives with /* The libjpeg-turbo SIMD extensions produce false positives with
MemorySanitizer. */ MemorySanitizer. */
putenv(simdEnv); putenv(env);
#endif #endif
putenv(restartEnv);
snprintf(filename, FILENAME_MAX, "/tmp/libjpeg-turbo_compress_yuv_fuzz.XXXXXX"); snprintf(filename, FILENAME_MAX, "/tmp/libjpeg-turbo_compress_yuv_fuzz.XXXXXX");
if ((fd = mkstemp(filename)) < 0 || write(fd, data, size) < 0) if ((fd = mkstemp(filename)) < 0 || write(fd, data, size) < 0)
goto bailout; goto bailout;
if ((handle = tjInitCompress()) == NULL) if ((handle = tj3Init(TJINIT_COMPRESS)) == NULL)
goto bailout; goto bailout;
for (ti = 0; ti < NUMTESTS; ti++) { for (ti = 0; ti < NUMTESTS; ti++) {
int flags = TJFLAG_FUZZING | TJFLAG_NOREALLOC, sum = 0, pf = tests[ti].pf; int sum = 0, pf = tests[ti].pf;
unsigned long dstSize = 0, maxBufSize; size_t dstSize = 0, maxBufSize;
/* Test non-default compression options on specific iterations. */ /* Test non-default compression options on specific iterations. */
if (ti == 0) tj3Set(handle, TJPARAM_BOTTOMUP, ti == 0);
flags |= TJFLAG_BOTTOMUP | TJFLAG_ACCURATEDCT; tj3Set(handle, TJPARAM_FASTDCT, ti == 1);
else if (ti == 1 || ti == 3) tj3Set(handle, TJPARAM_OPTIMIZE, ti == 4);
flags |= TJFLAG_PROGRESSIVE; tj3Set(handle, TJPARAM_PROGRESSIVE, ti == 1 || ti == 3);
if (ti == 2 || ti == 3) tj3Set(handle, TJPARAM_ARITHMETIC, ti == 2 || ti == 3);
flags |= TJFLAG_ARITHMETIC; tj3Set(handle, TJPARAM_NOREALLOC, 1);
if (ti == 1 || ti == 2) tj3Set(handle, TJPARAM_RESTARTBLOCKS, ti == 3 || ti == 4 ? 4 : 0);
restartEnv[11] = '2';
else
restartEnv[11] = '0';
/* tjLoadImage() refuses to load images larger than 1 Megapixel when tj3Set(handle, TJPARAM_MAXPIXELS, 1048576);
FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION is defined (yes, that's a dirty /* tj3LoadImage8() will refuse to load images larger than 1 Megapixel, so
hack), so we don't need to check the width and height here. */ we don't need to check the width and height here. */
if ((srcBuf = tjLoadImage(filename, &width, 1, &height, &pf, if ((srcBuf = tj3LoadImage8(handle, filename, &width, 1, &height,
flags)) == NULL) &pf)) == NULL)
continue; continue;
maxBufSize = tjBufSize(width, height, tests[ti].subsamp); maxBufSize = tj3JPEGBufSize(width, height, tests[ti].subsamp);
if ((dstBuf = (unsigned char *)malloc(maxBufSize)) == NULL) if ((dstBuf = (unsigned char *)malloc(maxBufSize)) == NULL)
goto bailout; goto bailout;
if ((yuvBuf = if ((yuvBuf =
(unsigned char *)malloc(tjBufSizeYUV2(width, 1, height, (unsigned char *)malloc(tj3YUVBufSize(width, 1, height,
tests[ti].subsamp))) == NULL) tests[ti].subsamp))) == NULL)
goto bailout; goto bailout;
if (tjEncodeYUV3(handle, srcBuf, width, 0, height, pf, yuvBuf, 1, tj3Set(handle, TJPARAM_SUBSAMP, tests[ti].subsamp);
tests[ti].subsamp, flags) == 0 && tj3Set(handle, TJPARAM_QUALITY, tests[ti].quality);
tjCompressFromYUV(handle, yuvBuf, width, 1, height, tests[ti].subsamp, if (tj3EncodeYUV8(handle, srcBuf, width, 0, height, pf, yuvBuf, 1) == 0 &&
&dstBuf, &dstSize, tests[ti].quality, flags) == 0) { tj3CompressFromYUV8(handle, yuvBuf, width, 1, height, &dstBuf,
&dstSize) == 0) {
/* Touch all of the output pixels in order to catch uninitialized reads /* Touch all of the output pixels in order to catch uninitialized reads
when using MemorySanitizer. */ when using MemorySanitizer. */
for (i = 0; i < dstSize; i++) for (i = 0; i < dstSize; i++)
@@ -122,7 +116,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
dstBuf = NULL; dstBuf = NULL;
free(yuvBuf); free(yuvBuf);
yuvBuf = NULL; yuvBuf = NULL;
tjFree(srcBuf); tj3Free(srcBuf);
srcBuf = NULL; srcBuf = NULL;
/* Prevent the code above from being optimized out. This test should never /* Prevent the code above from being optimized out. This test should never
@@ -134,11 +128,11 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
bailout: bailout:
free(dstBuf); free(dstBuf);
free(yuvBuf); free(yuvBuf);
tjFree(srcBuf); tj3Free(srcBuf);
if (fd >= 0) { if (fd >= 0) {
close(fd); close(fd);
if (strlen(filename) > 0) unlink(filename); if (strlen(filename) > 0) unlink(filename);
} }
if (handle) tjDestroy(handle); tj3Destroy(handle);
return 0; return 0;
} }

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (C)2021-2022 D. R. Commander. All Rights Reserved. * Copyright (C)2021-2023 D. R. Commander. All Rights Reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met: * modification, are permitted provided that the following conditions are met:
@@ -37,8 +37,8 @@
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
{ {
tjhandle handle = NULL; tjhandle handle = NULL;
unsigned char *dstBuf = NULL; void *dstBuf = NULL;
int width = 0, height = 0, jpegSubsamp, jpegColorspace, jpegFlags, pfi; int width = 0, height = 0, precision, sampleSize, pfi;
/* TJPF_RGB-TJPF_BGR share the same code paths, as do TJPF_RGBX-TJPF_XRGB and /* TJPF_RGB-TJPF_BGR share the same code paths, as do TJPF_RGBX-TJPF_XRGB and
TJPF_RGBA-TJPF_ARGB. Thus, the pixel formats below should be the minimum TJPF_RGBA-TJPF_ARGB. Thus, the pixel formats below should be the minimum
necessary to achieve full coverage. */ necessary to achieve full coverage. */
@@ -52,14 +52,15 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
putenv(env); putenv(env);
#endif #endif
if ((handle = tjInitDecompress()) == NULL) if ((handle = tj3Init(TJINIT_DECOMPRESS)) == NULL)
goto bailout; goto bailout;
/* We ignore the return value of tjDecompressHeader3(), because some JPEG if (tj3DecompressHeader(handle, data, size) < 0)
images may have unusual subsampling configurations that the TurboJPEG API goto bailout;
cannot identify but can still decompress. */ width = tj3Get(handle, TJPARAM_JPEGWIDTH);
tjDecompressHeader4(handle, data, size, &width, &height, &jpegSubsamp, height = tj3Get(handle, TJPARAM_JPEGHEIGHT);
&jpegColorspace, &jpegFlags); precision = tj3Get(handle, TJPARAM_PRECISION);
sampleSize = (precision > 8 ? 2 : 1);
/* Ignore 0-pixel images and images larger than 1 Megapixel, as Google's /* Ignore 0-pixel images and images larger than 1 Megapixel, as Google's
OSS-Fuzz target for libjpeg-turbo did. Casting width to (uint64_t) OSS-Fuzz target for libjpeg-turbo did. Casting width to (uint64_t)
@@ -67,27 +68,61 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
if (width < 1 || height < 1 || (uint64_t)width * height > 1048576) if (width < 1 || height < 1 || (uint64_t)width * height > 1048576)
goto bailout; goto bailout;
tj3Set(handle, TJPARAM_SCANLIMIT, 500);
for (pfi = 0; pfi < NUMPF; pfi++) { for (pfi = 0; pfi < NUMPF; pfi++) {
int pf = pixelFormats[pfi], flags = TJFLAG_LIMITSCANS, i, sum = 0; int pf = pixelFormats[pfi], i;
int w = width, h = height; int64_t sum = 0;
/* Test non-default decompression options on the first iteration. */ /* Test non-default decompression options on the first iteration. */
if (pfi == 0) if (!tj3Get(handle, TJPARAM_LOSSLESS)) {
flags |= TJFLAG_BOTTOMUP | TJFLAG_FASTUPSAMPLE | TJFLAG_FASTDCT; tj3Set(handle, TJPARAM_BOTTOMUP, pfi == 0);
/* Test IDCT scaling on the second iteration. */ tj3Set(handle, TJPARAM_FASTUPSAMPLE, pfi == 0);
else if (pfi == 1 && !(jpegFlags & TJFLAG_LOSSLESS)) { tj3Set(handle, TJPARAM_FASTDCT, pfi == 0);
w = (width + 1) / 2;
h = (height + 1) / 2; /* Test IDCT scaling on the second iteration. */
if (pfi == 1) {
tjscalingfactor sf = { 1, 2 };
tj3SetScalingFactor(handle, sf);
} else
tj3SetScalingFactor(handle, TJUNSCALED);
/* Test partial image decompression on the fourth iteration, if the image
is large enough. */
if (pfi == 3 && width >= 97 && height >= 75) {
tjregion cr = { 32, 16, 65, 59 };
tj3SetCroppingRegion(handle, cr);
} else
tj3SetCroppingRegion(handle, TJUNCROPPED);
} }
if ((dstBuf = (unsigned char *)malloc(w * h * tjPixelSize[pf])) == NULL) if ((dstBuf = malloc(width * height * tjPixelSize[pf] *
sampleSize)) == NULL)
goto bailout; goto bailout;
if (tjDecompress2(handle, data, size, dstBuf, w, 0, h, pf, flags) == 0) { if (precision == 8) {
/* Touch all of the output pixels in order to catch uninitialized reads if (tj3Decompress8(handle, data, size, (unsigned char *)dstBuf, 0,
when using MemorySanitizer. */ pf) == 0) {
for (i = 0; i < w * h * tjPixelSize[pf]; i++) /* Touch all of the output pixels in order to catch uninitialized reads
sum += dstBuf[i]; when using MemorySanitizer. */
for (i = 0; i < width * height * tjPixelSize[pf]; i++)
sum += ((unsigned char *)dstBuf)[i];
}
} else if (precision == 12) {
if (tj3Decompress12(handle, data, size, (short *)dstBuf, 0, pf) == 0) {
/* Touch all of the output pixels in order to catch uninitialized reads
when using MemorySanitizer. */
for (i = 0; i < width * height * tjPixelSize[pf]; i++)
sum += ((short *)dstBuf)[i];
}
} else {
if (tj3Decompress16(handle, data, size, (unsigned short *)dstBuf, 0,
pf) == 0) {
/* Touch all of the output pixels in order to catch uninitialized reads
when using MemorySanitizer. */
for (i = 0; i < width * height * tjPixelSize[pf]; i++)
sum += ((unsigned short *)dstBuf)[i];
}
} }
free(dstBuf); free(dstBuf);
@@ -95,12 +130,12 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
/* Prevent the code above from being optimized out. This test should never /* Prevent the code above from being optimized out. This test should never
be true, but the compiler doesn't know that. */ be true, but the compiler doesn't know that. */
if (sum > 255 * 1048576 * tjPixelSize[pf]) if (sum > ((1LL << precision) - 1LL) * 1048576LL * tjPixelSize[pf])
goto bailout; goto bailout;
} }
bailout: bailout:
free(dstBuf); free(dstBuf);
if (handle) tjDestroy(handle); tj3Destroy(handle);
return 0; return 0;
} }

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (C)2021-2022 D. R. Commander. All Rights Reserved. * Copyright (C)2021-2023 D. R. Commander. All Rights Reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met: * modification, are permitted provided that the following conditions are met:
@@ -38,7 +38,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
{ {
tjhandle handle = NULL; tjhandle handle = NULL;
unsigned char *dstBuf = NULL, *yuvBuf = NULL; unsigned char *dstBuf = NULL, *yuvBuf = NULL;
int width = 0, height = 0, jpegSubsamp, jpegColorspace, jpegFlags, pfi; int width = 0, height = 0, jpegSubsamp, pfi;
/* TJPF_RGB-TJPF_BGR share the same code paths, as do TJPF_RGBX-TJPF_XRGB and /* TJPF_RGB-TJPF_BGR share the same code paths, as do TJPF_RGBX-TJPF_XRGB and
TJPF_RGBA-TJPF_ARGB. Thus, the pixel formats below should be the minimum TJPF_RGBA-TJPF_ARGB. Thus, the pixel formats below should be the minimum
necessary to achieve full coverage. */ necessary to achieve full coverage. */
@@ -52,40 +52,50 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
putenv(env); putenv(env);
#endif #endif
if ((handle = tjInitDecompress()) == NULL) if ((handle = tj3Init(TJINIT_DECOMPRESS)) == NULL)
goto bailout; goto bailout;
if (tjDecompressHeader4(handle, data, size, &width, &height, &jpegSubsamp, if (tj3DecompressHeader(handle, data, size) < 0)
&jpegColorspace, &jpegFlags) < 0)
goto bailout; goto bailout;
width = tj3Get(handle, TJPARAM_JPEGWIDTH);
height = tj3Get(handle, TJPARAM_JPEGHEIGHT);
jpegSubsamp = tj3Get(handle, TJPARAM_SUBSAMP);
/* Ignore 0-pixel images and images larger than 1 Megapixel. Casting width /* Ignore 0-pixel images and images larger than 1 Megapixel. Casting width
to (uint64_t) prevents integer overflow if width * height > INT_MAX. */ to (uint64_t) prevents integer overflow if width * height > INT_MAX. */
if (width < 1 || height < 1 || (uint64_t)width * height > 1048576) if (width < 1 || height < 1 || (uint64_t)width * height > 1048576)
goto bailout; goto bailout;
tj3Set(handle, TJPARAM_SCANLIMIT, 500);
for (pfi = 0; pfi < NUMPF; pfi++) { for (pfi = 0; pfi < NUMPF; pfi++) {
int pf = pixelFormats[pfi], flags = TJFLAG_LIMITSCANS, i, sum = 0;
int w = width, h = height; int w = width, h = height;
int pf = pixelFormats[pfi], i, sum = 0;
/* Test non-default decompression options on the first iteration. */ /* Test non-default decompression options on the first iteration. */
if (pfi == 0) if (!tj3Get(handle, TJPARAM_LOSSLESS)) {
flags |= TJFLAG_BOTTOMUP | TJFLAG_FASTUPSAMPLE | TJFLAG_FASTDCT; tj3Set(handle, TJPARAM_BOTTOMUP, pfi == 0);
/* Test IDCT scaling on the second iteration. */ tj3Set(handle, TJPARAM_FASTUPSAMPLE, pfi == 0);
else if (pfi == 1 && !(jpegFlags & TJFLAG_LOSSLESS)) { tj3Set(handle, TJPARAM_FASTDCT, pfi == 0);
w = (width + 3) / 4;
h = (height + 3) / 4; /* Test IDCT scaling on the second iteration. */
if (pfi == 1) {
tjscalingfactor sf = { 3, 4 };
tj3SetScalingFactor(handle, sf);
w = TJSCALED(width, sf);
h = TJSCALED(height, sf);
} else
tj3SetScalingFactor(handle, TJUNSCALED);
} }
if ((dstBuf = (unsigned char *)malloc(w * h * tjPixelSize[pf])) == NULL) if ((dstBuf = (unsigned char *)malloc(w * h * tjPixelSize[pf])) == NULL)
goto bailout; goto bailout;
if ((yuvBuf = if ((yuvBuf =
(unsigned char *)malloc(tjBufSizeYUV2(w, 1, h, jpegSubsamp))) == NULL) (unsigned char *)malloc(tj3YUVBufSize(w, 1, h, jpegSubsamp))) == NULL)
goto bailout; goto bailout;
if (tjDecompressToYUV2(handle, data, size, yuvBuf, w, 1, h, flags) == 0 && if (tj3DecompressToYUV8(handle, data, size, yuvBuf, 1) == 0 &&
tjDecodeYUV(handle, yuvBuf, 1, jpegSubsamp, dstBuf, w, 0, h, pf, tj3DecodeYUV8(handle, yuvBuf, 1, dstBuf, w, 0, h, pf) == 0) {
flags) == 0) {
/* Touch all of the output pixels in order to catch uninitialized reads /* Touch all of the output pixels in order to catch uninitialized reads
when using MemorySanitizer. */ when using MemorySanitizer. */
for (i = 0; i < w * h * tjPixelSize[pf]; i++) for (i = 0; i < w * h * tjPixelSize[pf]; i++)
@@ -106,6 +116,6 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
bailout: bailout:
free(dstBuf); free(dstBuf);
free(yuvBuf); free(yuvBuf);
if (handle) tjDestroy(handle); tj3Destroy(handle);
return 0; return 0;
} }

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (C)2021-2022 D. R. Commander. All Rights Reserved. * Copyright (C)2021-2023 D. R. Commander. All Rights Reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met: * modification, are permitted provided that the following conditions are met:
@@ -40,7 +40,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
tjhandle handle = NULL; tjhandle handle = NULL;
unsigned char *dstBufs[NUMXFORMS] = { NULL, NULL, NULL }; unsigned char *dstBufs[NUMXFORMS] = { NULL, NULL, NULL };
unsigned long dstSizes[NUMXFORMS] = { 0, 0, 0 }, maxBufSize; unsigned long dstSizes[NUMXFORMS] = { 0, 0, 0 }, maxBufSize;
int width = 0, height = 0, jpegSubsamp, jpegColorspace, i, t; int width = 0, height = 0, jpegSubsamp, i, t;
tjtransform transforms[NUMXFORMS]; tjtransform transforms[NUMXFORMS];
#if defined(__has_feature) && __has_feature(memory_sanitizer) #if defined(__has_feature) && __has_feature(memory_sanitizer)
char env[18] = "JSIMD_FORCENONE=1"; char env[18] = "JSIMD_FORCENONE=1";
@@ -50,20 +50,22 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
putenv(env); putenv(env);
#endif #endif
if ((handle = tjInitTransform()) == NULL) if ((handle = tj3Init(TJINIT_TRANSFORM)) == NULL)
goto bailout; goto bailout;
/* We ignore the return value of tjDecompressHeader3(), because some JPEG if (tj3DecompressHeader(handle, data, size) < 0)
images may have unusual subsampling configurations that the TurboJPEG API goto bailout;
cannot identify but can still transform. */ width = tj3Get(handle, TJPARAM_JPEGWIDTH);
tjDecompressHeader3(handle, data, size, &width, &height, &jpegSubsamp, height = tj3Get(handle, TJPARAM_JPEGHEIGHT);
&jpegColorspace); jpegSubsamp = tj3Get(handle, TJPARAM_SUBSAMP);
/* Ignore 0-pixel images and images larger than 1 Megapixel. Casting width /* Ignore 0-pixel images and images larger than 1 Megapixel. Casting width
to (uint64_t) prevents integer overflow if width * height > INT_MAX. */ to (uint64_t) prevents integer overflow if width * height > INT_MAX. */
if (width < 1 || height < 1 || (uint64_t)width * height > 1048576) if (width < 1 || height < 1 || (uint64_t)width * height > 1048576)
goto bailout; goto bailout;
tj3Set(handle, TJPARAM_SCANLIMIT, 500);
if (jpegSubsamp < 0 || jpegSubsamp >= TJ_NUMSAMP) if (jpegSubsamp < 0 || jpegSubsamp >= TJ_NUMSAMP)
jpegSubsamp = TJSAMP_444; jpegSubsamp = TJSAMP_444;
@@ -72,7 +74,8 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
transforms[0].op = TJXOP_NONE; transforms[0].op = TJXOP_NONE;
transforms[0].options = TJXOPT_PROGRESSIVE | TJXOPT_COPYNONE; transforms[0].options = TJXOPT_PROGRESSIVE | TJXOPT_COPYNONE;
dstBufs[0] = (unsigned char *)malloc(tjBufSize(width, height, jpegSubsamp)); dstBufs[0] =
(unsigned char *)malloc(tj3JPEGBufSize(width, height, jpegSubsamp));
if (!dstBufs[0]) if (!dstBufs[0])
goto bailout; goto bailout;
@@ -81,21 +84,23 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
transforms[1].op = TJXOP_TRANSPOSE; transforms[1].op = TJXOP_TRANSPOSE;
transforms[1].options = TJXOPT_GRAY | TJXOPT_CROP | TJXOPT_COPYNONE; transforms[1].options = TJXOPT_GRAY | TJXOPT_CROP | TJXOPT_COPYNONE;
dstBufs[1] = dstBufs[1] =
(unsigned char *)malloc(tjBufSize((width + 1) / 2, (height + 1) / 2, (unsigned char *)malloc(tj3JPEGBufSize((width + 1) / 2, (height + 1) / 2,
TJSAMP_GRAY)); TJSAMP_GRAY));
if (!dstBufs[1]) if (!dstBufs[1])
goto bailout; goto bailout;
transforms[2].op = TJXOP_ROT90; transforms[2].op = TJXOP_ROT90;
transforms[2].options = TJXOPT_TRIM | TJXOPT_COPYNONE | TJXOPT_ARITHMETIC; transforms[2].options = TJXOPT_TRIM | TJXOPT_COPYNONE | TJXOPT_ARITHMETIC;
dstBufs[2] = (unsigned char *)malloc(tjBufSize(height, width, jpegSubsamp)); dstBufs[2] =
(unsigned char *)malloc(tj3JPEGBufSize(height, width, jpegSubsamp));
if (!dstBufs[2]) if (!dstBufs[2])
goto bailout; goto bailout;
maxBufSize = tjBufSize(width, height, jpegSubsamp); maxBufSize = tj3JPEGBufSize(width, height, jpegSubsamp);
if (tjTransform(handle, data, size, NUMXFORMS, dstBufs, dstSizes, transforms, tj3Set(handle, TJPARAM_NOREALLOC, 1);
TJFLAG_LIMITSCANS | TJFLAG_NOREALLOC) == 0) { if (tj3Transform(handle, data, size, NUMXFORMS, dstBufs, dstSizes,
transforms) == 0) {
/* Touch all of the output pixels in order to catch uninitialized reads /* Touch all of the output pixels in order to catch uninitialized reads
when using MemorySanitizer. */ when using MemorySanitizer. */
for (t = 0; t < NUMXFORMS; t++) { for (t = 0; t < NUMXFORMS; t++) {
@@ -112,12 +117,14 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
} }
transforms[0].options &= ~TJXOPT_COPYNONE; transforms[0].options &= ~TJXOPT_COPYNONE;
transforms[0].options |= TJXOPT_OPTIMIZE;
free(dstBufs[0]); free(dstBufs[0]);
dstBufs[0] = NULL; dstBufs[0] = NULL;
dstSizes[0] = 0; dstSizes[0] = 0;
if (tjTransform(handle, data, size, 1, dstBufs, dstSizes, transforms, tj3Set(handle, TJPARAM_NOREALLOC, 0);
TJFLAG_LIMITSCANS) == 0) { if (tj3Transform(handle, data, size, 1, dstBufs, dstSizes,
transforms) == 0) {
int sum = 0; int sum = 0;
for (i = 0; i < dstSizes[0]; i++) for (i = 0; i < dstSizes[0]; i++)
@@ -130,6 +137,6 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
bailout: bailout:
for (t = 0; t < NUMXFORMS; t++) for (t = 0; t < NUMXFORMS; t++)
free(dstBufs[t]); free(dstBufs[t]);
if (handle) tjDestroy(handle); tj3Destroy(handle);
return 0; return 0;
} }

File diff suppressed because it is too large Load Diff

View File

@@ -140,8 +140,6 @@ class TJExample implements TJCustomFilter {
System.out.println("-fastdct = Use the fastest DCT/IDCT algorithm available\n"); System.out.println("-fastdct = Use the fastest DCT/IDCT algorithm available\n");
System.out.println("-accuratedct = Use the most accurate DCT/IDCT algorithm available\n");
System.exit(1); System.exit(1);
} }
@@ -150,11 +148,10 @@ class TJExample implements TJCustomFilter {
try { try {
TJScalingFactor scalingFactor = new TJScalingFactor(1, 1); TJScalingFactor scalingFactor = TJ.UNSCALED;
int outSubsamp = -1, outQual = -1; int outSubsamp = -1, outQual = -1;
TJTransform xform = new TJTransform(); TJTransform xform = new TJTransform();
boolean display = false; boolean display = false, fastUpsample = false, fastDCT = false;
int flags = 0;
int width, height; int width, height;
String inFormat = "jpg", outFormat = "jpg"; String inFormat = "jpg", outFormat = "jpg";
BufferedImage img = null; BufferedImage img = null;
@@ -244,13 +241,10 @@ class TJExample implements TJCustomFilter {
display = true; display = true;
else if (argv[i].equalsIgnoreCase("-fastupsample")) { else if (argv[i].equalsIgnoreCase("-fastupsample")) {
System.out.println("Using fast upsampling code"); System.out.println("Using fast upsampling code");
flags |= TJ.FLAG_FASTUPSAMPLE; fastUpsample = true;
} else if (argv[i].equalsIgnoreCase("-fastdct")) { } else if (argv[i].equalsIgnoreCase("-fastdct")) {
System.out.println("Using fastest DCT/IDCT algorithm"); System.out.println("Using fastest DCT/IDCT algorithm");
flags |= TJ.FLAG_FASTDCT; fastDCT = true;
} else if (argv[i].equalsIgnoreCase("-accuratedct")) {
System.out.println("Using most accurate DCT/IDCT algorithm");
flags |= TJ.FLAG_ACCURATEDCT;
} else usage(); } else usage();
} }
@@ -291,20 +285,21 @@ class TJExample implements TJCustomFilter {
TJTransform[] xforms = new TJTransform[1]; TJTransform[] xforms = new TJTransform[1];
xforms[0] = xform; xforms[0] = xform;
xforms[0].options |= TJTransform.OPT_TRIM; xforms[0].options |= TJTransform.OPT_TRIM;
TJDecompressor[] tjds = tjt.transform(xforms, 0); TJDecompressor[] tjds = tjt.transform(xforms);
tjd = tjds[0]; tjd = tjds[0];
tjt.close(); tjt.close();
} else } else
tjd = new TJDecompressor(jpegBuf); tjd = new TJDecompressor(jpegBuf);
tjd.set(TJ.PARAM_FASTUPSAMPLE, fastUpsample ? 1 : 0);
tjd.set(TJ.PARAM_FASTDCT, fastDCT ? 1 : 0);
width = tjd.getWidth(); width = tjd.getWidth();
height = tjd.getHeight(); height = tjd.getHeight();
int inSubsamp = tjd.getSubsamp(); int inSubsamp = tjd.get(TJ.PARAM_SUBSAMP);
int inColorspace = tjd.getColorspace(); int inColorspace = tjd.get(TJ.PARAM_COLORSPACE);
int inFlags = tjd.getFlags();
if ((inFlags & TJ.FLAG_LOSSLESS) != 0) if (tjd.get(TJ.PARAM_LOSSLESS) == 1)
scalingFactor = new TJScalingFactor(1, 1); scalingFactor = TJ.UNSCALED;
System.out.println((doTransform ? "Transformed" : "Input") + System.out.println((doTransform ? "Transformed" : "Input") +
" Image (jpg): " + width + " x " + height + " Image (jpg): " + width + " x " + height +
@@ -326,16 +321,16 @@ class TJExample implements TJCustomFilter {
/* Scaling and/or a non-JPEG output image format and/or compression /* Scaling and/or a non-JPEG output image format and/or compression
options have been selected, so we need to decompress the options have been selected, so we need to decompress the
input/transformed image. */ input/transformed image. */
tjd.setScalingFactor(scalingFactor);
width = scalingFactor.getScaled(width); width = scalingFactor.getScaled(width);
height = scalingFactor.getScaled(height); height = scalingFactor.getScaled(height);
if (outSubsamp < 0) if (outSubsamp < 0)
outSubsamp = inSubsamp; outSubsamp = inSubsamp;
if (!outFormat.equalsIgnoreCase("jpg")) if (!outFormat.equalsIgnoreCase("jpg"))
img = tjd.decompress(width, height, BufferedImage.TYPE_INT_RGB, img = tjd.decompress8(BufferedImage.TYPE_INT_RGB);
flags);
else else
imgBuf = tjd.decompress(width, 0, height, TJ.PF_BGRX, flags); imgBuf = tjd.decompress8(0, TJ.PF_BGRX);
tjd.close(); tjd.close();
} else { } else {
/* Input image is not a JPEG image. Load it into memory. */ /* Input image is not a JPEG image. Load it into memory. */
@@ -372,13 +367,14 @@ class TJExample implements TJCustomFilter {
" subsampling, quality = " + outQual); " subsampling, quality = " + outQual);
TJCompressor tjc = new TJCompressor(); TJCompressor tjc = new TJCompressor();
tjc.setSubsamp(outSubsamp); tjc.set(TJ.PARAM_SUBSAMP, outSubsamp);
tjc.setJPEGQuality(outQual); tjc.set(TJ.PARAM_QUALITY, outQual);
tjc.set(TJ.PARAM_FASTDCT, fastDCT ? 1 : 0);
if (img != null) if (img != null)
tjc.setSourceImage(img, 0, 0, 0, 0); tjc.setSourceImage(img, 0, 0, 0, 0);
else else
tjc.setSourceImage(imgBuf, 0, 0, width, 0, height, TJ.PF_BGRX); tjc.setSourceImage(imgBuf, 0, 0, width, 0, height, TJ.PF_BGRX);
byte[] jpegBuf = tjc.compress(flags); byte[] jpegBuf = tjc.compress();
int jpegSize = tjc.getCompressedSize(); int jpegSize = tjc.getCompressedSize();
tjc.close(); tjc.close();

View File

@@ -49,10 +49,13 @@ final class TJUnitTest {
System.out.println("\nUSAGE: java " + CLASS_NAME + " [options]\n"); System.out.println("\nUSAGE: java " + CLASS_NAME + " [options]\n");
System.out.println("Options:"); System.out.println("Options:");
System.out.println("-yuv = test YUV encoding/compression/decompression/decoding"); System.out.println("-yuv = test YUV encoding/compression/decompression/decoding");
System.out.println(" (8-bit data precision only)");
System.out.println("-noyuvpad = do not pad each row in each Y, U, and V plane to the nearest"); System.out.println("-noyuvpad = do not pad each row in each Y, U, and V plane to the nearest");
System.out.println(" multiple of 4 bytes"); System.out.println(" multiple of 4 bytes");
System.out.println("-precision N = test N-bit data precision (N is 8, 12, or 16; default is 8; if N");
System.out.println(" is 16, then -lossless is implied)");
System.out.println("-lossless = test lossless JPEG compression/decompression"); System.out.println("-lossless = test lossless JPEG compression/decompression");
System.out.println("-bi = test BufferedImage I/O\n"); System.out.println("-bi = test BufferedImage I/O (8-bit data precision only)\n");
System.exit(1); System.exit(1);
} }
@@ -68,13 +71,13 @@ final class TJUnitTest {
"RGBA", "BGRA", "ABGR", "ARGB", "CMYK" "RGBA", "BGRA", "ABGR", "ARGB", "CMYK"
}; };
static final int[] FORMATS_3BYTE = { static final int[] FORMATS_3SAMPLE = {
TJ.PF_RGB, TJ.PF_BGR TJ.PF_RGB, TJ.PF_BGR
}; };
static final int[] FORMATS_3BYTEBI = { static final int[] FORMATS_3BYTEBI = {
BufferedImage.TYPE_3BYTE_BGR BufferedImage.TYPE_3BYTE_BGR
}; };
static final int[] FORMATS_4BYTE = { static final int[] FORMATS_4SAMPLE = {
TJ.PF_RGBX, TJ.PF_BGRX, TJ.PF_XBGR, TJ.PF_XRGB, TJ.PF_CMYK TJ.PF_RGBX, TJ.PF_BGRX, TJ.PF_XBGR, TJ.PF_XRGB, TJ.PF_CMYK
}; };
static final int[] FORMATS_4BYTEBI = { static final int[] FORMATS_4BYTEBI = {
@@ -96,6 +99,8 @@ final class TJUnitTest {
private static boolean lossless = false; private static boolean lossless = false;
private static int psv = 1; private static int psv = 1;
private static int yuvAlign = 4; private static int yuvAlign = 4;
private static int precision = 8;
private static int sampleSize, maxSample, tolerance, redToY, yellowToY;
private static boolean bi = false; private static boolean bi = false;
private static int exitStatus = 0; private static int exitStatus = 0;
@@ -145,8 +150,22 @@ final class TJUnitTest {
} }
} }
static void initBuf(byte[] buf, int w, int pitch, int h, int pf, int flags) static void fillArray(Object buf, int val) {
throws Exception { if (precision == 8)
Arrays.fill((byte[])buf, (byte)val);
else
Arrays.fill((short[])buf, (short)val);
}
static void setVal(Object buf, int index, int value) {
if (precision == 8)
((byte[])buf)[index] = (byte)value;
else
((short[])buf)[index] = (short)value;
}
static void initBuf(Object buf, int w, int pitch, int h, int pf,
boolean bottomUp) throws Exception {
int roffset = TJ.getRedOffset(pf); int roffset = TJ.getRedOffset(pf);
int goffset = TJ.getGreenOffset(pf); int goffset = TJ.getGreenOffset(pf);
int boffset = TJ.getBlueOffset(pf); int boffset = TJ.getBlueOffset(pf);
@@ -155,67 +174,67 @@ final class TJUnitTest {
int index, row, col, halfway = 16; int index, row, col, halfway = 16;
if (pf == TJ.PF_GRAY) { if (pf == TJ.PF_GRAY) {
Arrays.fill(buf, (byte)0); fillArray(buf, 0);
for (row = 0; row < h; row++) { for (row = 0; row < h; row++) {
for (col = 0; col < w; col++) { for (col = 0; col < w; col++) {
if ((flags & TJ.FLAG_BOTTOMUP) != 0) if (bottomUp)
index = pitch * (h - row - 1) + col; index = pitch * (h - row - 1) + col;
else else
index = pitch * row + col; index = pitch * row + col;
if (((row / 8) + (col / 8)) % 2 == 0) if (((row / 8) + (col / 8)) % 2 == 0)
buf[index] = (row < halfway) ? (byte)255 : 0; setVal(buf, index, (row < halfway) ? maxSample : 0);
else else
buf[index] = (row < halfway) ? 76 : (byte)226; setVal(buf, index, (row < halfway) ? redToY : yellowToY);
} }
} }
return; return;
} }
if (pf == TJ.PF_CMYK) { if (pf == TJ.PF_CMYK) {
Arrays.fill(buf, (byte)255); fillArray(buf, maxSample);
for (row = 0; row < h; row++) { for (row = 0; row < h; row++) {
for (col = 0; col < w; col++) { for (col = 0; col < w; col++) {
if ((flags & TJ.FLAG_BOTTOMUP) != 0) if (bottomUp)
index = (h - row - 1) * w + col; index = (h - row - 1) * w + col;
else else
index = row * w + col; index = row * w + col;
if (((row / 8) + (col / 8)) % 2 == 0) { if (((row / 8) + (col / 8)) % 2 == 0) {
if (row >= halfway) buf[index * ps + 3] = 0; if (row >= halfway) setVal(buf, index * ps + 3, 0);
} else { } else {
buf[index * ps + 2] = 0; setVal(buf, index * ps + 2, 0);
if (row < halfway) if (row < halfway)
buf[index * ps + 1] = 0; setVal(buf, index * ps + 1, 0);
} }
} }
} }
return; return;
} }
Arrays.fill(buf, (byte)0); fillArray(buf, 0);
for (row = 0; row < h; row++) { for (row = 0; row < h; row++) {
for (col = 0; col < w; col++) { for (col = 0; col < w; col++) {
if ((flags & TJ.FLAG_BOTTOMUP) != 0) if (bottomUp)
index = pitch * (h - row - 1) + col * ps; index = pitch * (h - row - 1) + col * ps;
else else
index = pitch * row + col * ps; index = pitch * row + col * ps;
if (((row / 8) + (col / 8)) % 2 == 0) { if (((row / 8) + (col / 8)) % 2 == 0) {
if (row < halfway) { if (row < halfway) {
buf[index + roffset] = (byte)255; setVal(buf, index + roffset, maxSample);
buf[index + goffset] = (byte)255; setVal(buf, index + goffset, maxSample);
buf[index + boffset] = (byte)255; setVal(buf, index + boffset, maxSample);
} }
} else { } else {
buf[index + roffset] = (byte)255; setVal(buf, index + roffset, maxSample);
if (row >= halfway) if (row >= halfway)
buf[index + goffset] = (byte)255; setVal(buf, index + goffset, maxSample);
} }
if (aoffset >= 0) if (aoffset >= 0)
buf[index + aoffset] = (byte)255; setVal(buf, index + aoffset, maxSample);
} }
} }
} }
static void initIntBuf(int[] buf, int w, int pitch, int h, int pf, int flags) static void initIntBuf(int[] buf, int w, int pitch, int h, int pf,
throws Exception { boolean bottomUp) throws Exception {
int rshift = TJ.getRedOffset(pf) * 8; int rshift = TJ.getRedOffset(pf) * 8;
int gshift = TJ.getGreenOffset(pf) * 8; int gshift = TJ.getGreenOffset(pf) * 8;
int bshift = TJ.getBlueOffset(pf) * 8; int bshift = TJ.getBlueOffset(pf) * 8;
@@ -225,7 +244,7 @@ final class TJUnitTest {
Arrays.fill(buf, 0); Arrays.fill(buf, 0);
for (row = 0; row < h; row++) { for (row = 0; row < h; row++) {
for (col = 0; col < w; col++) { for (col = 0; col < w; col++) {
if ((flags & TJ.FLAG_BOTTOMUP) != 0) if (bottomUp)
index = pitch * (h - row - 1) + col; index = pitch * (h - row - 1) + col;
else else
index = pitch * row + col; index = pitch * row + col;
@@ -246,7 +265,8 @@ final class TJUnitTest {
} }
} }
static void initImg(BufferedImage img, int pf, int flags) throws Exception { static void initImg(BufferedImage img, int pf, boolean bottomUp)
throws Exception {
WritableRaster wr = img.getRaster(); WritableRaster wr = img.getRaster();
int imgType = img.getType(); int imgType = img.getType();
@@ -259,20 +279,20 @@ final class TJUnitTest {
int pitch = sm.getScanlineStride(); int pitch = sm.getScanlineStride();
DataBufferInt db = (DataBufferInt)wr.getDataBuffer(); DataBufferInt db = (DataBufferInt)wr.getDataBuffer();
int[] buf = db.getData(); int[] buf = db.getData();
initIntBuf(buf, img.getWidth(), pitch, img.getHeight(), pf, flags); initIntBuf(buf, img.getWidth(), pitch, img.getHeight(), pf, bottomUp);
} else { } else {
ComponentSampleModel sm = (ComponentSampleModel)img.getSampleModel(); ComponentSampleModel sm = (ComponentSampleModel)img.getSampleModel();
int pitch = sm.getScanlineStride(); int pitch = sm.getScanlineStride();
DataBufferByte db = (DataBufferByte)wr.getDataBuffer(); DataBufferByte db = (DataBufferByte)wr.getDataBuffer();
byte[] buf = db.getData(); byte[] buf = db.getData();
initBuf(buf, img.getWidth(), pitch, img.getHeight(), pf, flags); initBuf(buf, img.getWidth(), pitch, img.getHeight(), pf, bottomUp);
} }
} }
static void checkVal(int row, int col, int v, String vname, int cv) static void checkVal(int row, int col, int v, String vname, int cv)
throws Exception { throws Exception {
v = (v < 0) ? v + 256 : v; v = (v < 0) ? v + 256 : v;
if (v < cv - (lossless ? 0 : 1) || v > cv + (lossless ? 0 : 1)) { if (v < cv - tolerance || v > cv + tolerance) {
throw new Exception("Comp. " + vname + " at " + row + "," + col + throw new Exception("Comp. " + vname + " at " + row + "," + col +
" should be " + cv + ", not " + v); " should be " + cv + ", not " + v);
} }
@@ -281,23 +301,34 @@ final class TJUnitTest {
static void checkVal0(int row, int col, int v, String vname) static void checkVal0(int row, int col, int v, String vname)
throws Exception { throws Exception {
v = (v < 0) ? v + 256 : v; v = (v < 0) ? v + 256 : v;
if (v > (lossless ? 0 : 1)) { if (v > tolerance) {
throw new Exception("Comp. " + vname + " at " + row + "," + col + throw new Exception("Comp. " + vname + " at " + row + "," + col +
" should be 0, not " + v); " should be 0, not " + v);
} }
} }
static void checkVal255(int row, int col, int v, String vname) static void checkValMax(int row, int col, int v, String vname)
throws Exception { throws Exception {
v = (v < 0) ? v + 256 : v; v = (v < 0) ? v + 256 : v;
if (v < 255 - (lossless ? 0 : 1)) { if (v < maxSample - tolerance) {
throw new Exception("Comp. " + vname + " at " + row + "," + col + throw new Exception("Comp. " + vname + " at " + row + "," + col +
" should be 255, not " + v); " should be " + maxSample + ", not " + v);
} }
} }
static int checkBuf(byte[] buf, int w, int pitch, int h, int pf, int subsamp, static int getVal(Object buf, int index) {
TJScalingFactor sf, int flags) throws Exception { int v;
if (precision == 8)
v = (int)(((byte[])buf)[index]);
else
v = (int)(((short[])buf)[index]);
if (v < 0)
v += maxSample + 1;
return v;
}
static int checkBuf(Object buf, int w, int pitch, int h, int pf, int subsamp,
TJScalingFactor sf, boolean bottomUp) throws Exception {
int roffset = TJ.getRedOffset(pf); int roffset = TJ.getRedOffset(pf);
int goffset = TJ.getGreenOffset(pf); int goffset = TJ.getGreenOffset(pf);
int boffset = TJ.getBlueOffset(pf); int boffset = TJ.getBlueOffset(pf);
@@ -315,29 +346,29 @@ final class TJUnitTest {
if (pf == TJ.PF_CMYK) { if (pf == TJ.PF_CMYK) {
for (row = 0; row < h; row++) { for (row = 0; row < h; row++) {
for (col = 0; col < w; col++) { for (col = 0; col < w; col++) {
if ((flags & TJ.FLAG_BOTTOMUP) != 0) if (bottomUp)
index = (h - row - 1) * w + col; index = (h - row - 1) * w + col;
else else
index = row * w + col; index = row * w + col;
byte c = buf[index * ps]; int c = getVal(buf, index * ps);
byte m = buf[index * ps + 1]; int m = getVal(buf, index * ps + 1);
byte y = buf[index * ps + 2]; int y = getVal(buf, index * ps + 2);
byte k = buf[index * ps + 3]; int k = getVal(buf, index * ps + 3);
checkVal255(row, col, c, "C"); checkValMax(row, col, c, "C");
if (((row / blockSize) + (col / blockSize)) % 2 == 0) { if (((row / blockSize) + (col / blockSize)) % 2 == 0) {
checkVal255(row, col, m, "M"); checkValMax(row, col, m, "M");
checkVal255(row, col, y, "Y"); checkValMax(row, col, y, "Y");
if (row < halfway) if (row < halfway)
checkVal255(row, col, k, "K"); checkValMax(row, col, k, "K");
else else
checkVal0(row, col, k, "K"); checkVal0(row, col, k, "K");
} else { } else {
checkVal0(row, col, y, "Y"); checkVal0(row, col, y, "Y");
checkVal255(row, col, k, "K"); checkValMax(row, col, k, "K");
if (row < halfway) if (row < halfway)
checkVal0(row, col, m, "M"); checkVal0(row, col, m, "M");
else else
checkVal255(row, col, m, "M"); checkValMax(row, col, m, "M");
} }
} }
} }
@@ -346,19 +377,19 @@ final class TJUnitTest {
for (row = 0; row < halfway; row++) { for (row = 0; row < halfway; row++) {
for (col = 0; col < w; col++) { for (col = 0; col < w; col++) {
if ((flags & TJ.FLAG_BOTTOMUP) != 0) if (bottomUp)
index = pitch * (h - row - 1) + col * ps; index = pitch * (h - row - 1) + col * ps;
else else
index = pitch * row + col * ps; index = pitch * row + col * ps;
byte r = buf[index + roffset]; int r = getVal(buf, index + roffset);
byte g = buf[index + goffset]; int g = getVal(buf, index + goffset);
byte b = buf[index + boffset]; int b = getVal(buf, index + boffset);
byte a = aoffset >= 0 ? buf[index + aoffset] : (byte)255; int a = aoffset >= 0 ? getVal(buf, index + aoffset) : maxSample;
if (((row / blockSize) + (col / blockSize)) % 2 == 0) { if (((row / blockSize) + (col / blockSize)) % 2 == 0) {
if (row < halfway) { if (row < halfway) {
checkVal255(row, col, r, "R"); checkValMax(row, col, r, "R");
checkVal255(row, col, g, "G"); checkValMax(row, col, g, "G");
checkVal255(row, col, b, "B"); checkValMax(row, col, b, "B");
} else { } else {
checkVal0(row, col, r, "R"); checkVal0(row, col, r, "R");
checkVal0(row, col, g, "G"); checkVal0(row, col, g, "G");
@@ -367,25 +398,25 @@ final class TJUnitTest {
} else { } else {
if (subsamp == TJ.SAMP_GRAY) { if (subsamp == TJ.SAMP_GRAY) {
if (row < halfway) { if (row < halfway) {
checkVal(row, col, r, "R", 76); checkVal(row, col, r, "R", redToY);
checkVal(row, col, g, "G", 76); checkVal(row, col, g, "G", redToY);
checkVal(row, col, b, "B", 76); checkVal(row, col, b, "B", redToY);
} else { } else {
checkVal(row, col, r, "R", 226); checkVal(row, col, r, "R", yellowToY);
checkVal(row, col, g, "G", 226); checkVal(row, col, g, "G", yellowToY);
checkVal(row, col, b, "B", 226); checkVal(row, col, b, "B", yellowToY);
} }
} else { } else {
checkVal255(row, col, r, "R"); checkValMax(row, col, r, "R");
if (row < halfway) { if (row < halfway) {
checkVal0(row, col, g, "G"); checkVal0(row, col, g, "G");
} else { } else {
checkVal255(row, col, g, "G"); checkValMax(row, col, g, "G");
} }
checkVal0(row, col, b, "B"); checkVal0(row, col, b, "B");
} }
} }
checkVal255(row, col, a, "A"); checkValMax(row, col, a, "A");
} }
} }
} catch (Exception e) { } catch (Exception e) {
@@ -397,22 +428,15 @@ final class TJUnitTest {
for (row = 0; row < h; row++) { for (row = 0; row < h; row++) {
for (col = 0; col < w; col++) { for (col = 0; col < w; col++) {
if (pf == TJ.PF_CMYK) { if (pf == TJ.PF_CMYK) {
int c = buf[pitch * row + col * ps]; int c = getVal(buf, pitch * row + col * ps);
int m = buf[pitch * row + col * ps + 1]; int m = getVal(buf, pitch * row + col * ps + 1);
int y = buf[pitch * row + col * ps + 2]; int y = getVal(buf, pitch * row + col * ps + 2);
int k = buf[pitch * row + col * ps + 3]; int k = getVal(buf, pitch * row + col * ps + 3);
if (c < 0) c += 256;
if (m < 0) m += 256;
if (y < 0) y += 256;
if (k < 0) k += 256;
System.out.format("%3d/%3d/%3d/%3d ", c, m, y, k); System.out.format("%3d/%3d/%3d/%3d ", c, m, y, k);
} else { } else {
int r = buf[pitch * row + col * ps + roffset]; int r = getVal(buf, pitch * row + col * ps + roffset);
int g = buf[pitch * row + col * ps + goffset]; int g = getVal(buf, pitch * row + col * ps + goffset);
int b = buf[pitch * row + col * ps + boffset]; int b = getVal(buf, pitch * row + col * ps + boffset);
if (r < 0) r += 256;
if (g < 0) g += 256;
if (b < 0) b += 256;
System.out.format("%3d/%3d/%3d ", r, g, b); System.out.format("%3d/%3d/%3d ", r, g, b);
} }
} }
@@ -423,7 +447,7 @@ final class TJUnitTest {
} }
static int checkIntBuf(int[] buf, int w, int pitch, int h, int pf, static int checkIntBuf(int[] buf, int w, int pitch, int h, int pf,
int subsamp, TJScalingFactor sf, int flags) int subsamp, TJScalingFactor sf, boolean bottomUp)
throws Exception { throws Exception {
int rshift = TJ.getRedOffset(pf) * 8; int rshift = TJ.getRedOffset(pf) * 8;
int gshift = TJ.getGreenOffset(pf) * 8; int gshift = TJ.getGreenOffset(pf) * 8;
@@ -436,7 +460,7 @@ final class TJUnitTest {
try { try {
for (row = 0; row < halfway; row++) { for (row = 0; row < halfway; row++) {
for (col = 0; col < w; col++) { for (col = 0; col < w; col++) {
if ((flags & TJ.FLAG_BOTTOMUP) != 0) if (bottomUp)
index = pitch * (h - row - 1) + col; index = pitch * (h - row - 1) + col;
else else
index = pitch * row + col; index = pitch * row + col;
@@ -446,9 +470,9 @@ final class TJUnitTest {
int a = ashift >= 0 ? (buf[index] >> ashift) & 0xFF : 255; int a = ashift >= 0 ? (buf[index] >> ashift) & 0xFF : 255;
if (((row / blockSize) + (col / blockSize)) % 2 == 0) { if (((row / blockSize) + (col / blockSize)) % 2 == 0) {
if (row < halfway) { if (row < halfway) {
checkVal255(row, col, r, "R"); checkValMax(row, col, r, "R");
checkVal255(row, col, g, "G"); checkValMax(row, col, g, "G");
checkVal255(row, col, b, "B"); checkValMax(row, col, b, "B");
} else { } else {
checkVal0(row, col, r, "R"); checkVal0(row, col, r, "R");
checkVal0(row, col, g, "G"); checkVal0(row, col, g, "G");
@@ -466,16 +490,16 @@ final class TJUnitTest {
checkVal(row, col, b, "B", 226); checkVal(row, col, b, "B", 226);
} }
} else { } else {
checkVal255(row, col, r, "R"); checkValMax(row, col, r, "R");
if (row < halfway) { if (row < halfway) {
checkVal0(row, col, g, "G"); checkVal0(row, col, g, "G");
} else { } else {
checkVal255(row, col, g, "G"); checkValMax(row, col, g, "G");
} }
checkVal0(row, col, b, "B"); checkVal0(row, col, b, "B");
} }
} }
checkVal255(row, col, a, "A"); checkValMax(row, col, a, "A");
} }
} }
} catch (Exception e) { } catch (Exception e) {
@@ -501,7 +525,7 @@ final class TJUnitTest {
} }
static int checkImg(BufferedImage img, int pf, int subsamp, static int checkImg(BufferedImage img, int pf, int subsamp,
TJScalingFactor sf, int flags) throws Exception { TJScalingFactor sf, boolean bottomUp) throws Exception {
WritableRaster wr = img.getRaster(); WritableRaster wr = img.getRaster();
int imgType = img.getType(); int imgType = img.getType();
if (imgType == BufferedImage.TYPE_INT_RGB || if (imgType == BufferedImage.TYPE_INT_RGB ||
@@ -514,14 +538,14 @@ final class TJUnitTest {
DataBufferInt db = (DataBufferInt)wr.getDataBuffer(); DataBufferInt db = (DataBufferInt)wr.getDataBuffer();
int[] buf = db.getData(); int[] buf = db.getData();
return checkIntBuf(buf, img.getWidth(), pitch, img.getHeight(), pf, return checkIntBuf(buf, img.getWidth(), pitch, img.getHeight(), pf,
subsamp, sf, flags); subsamp, sf, bottomUp);
} else { } else {
ComponentSampleModel sm = (ComponentSampleModel)img.getSampleModel(); ComponentSampleModel sm = (ComponentSampleModel)img.getSampleModel();
int pitch = sm.getScanlineStride(); int pitch = sm.getScanlineStride();
DataBufferByte db = (DataBufferByte)wr.getDataBuffer(); DataBufferByte db = (DataBufferByte)wr.getDataBuffer();
byte[] buf = db.getData(); byte[] buf = db.getData();
return checkBuf(buf, img.getWidth(), pitch, img.getHeight(), pf, subsamp, return checkBuf(buf, img.getWidth(), pitch, img.getHeight(), pf, subsamp,
sf, flags); sf, bottomUp);
} }
} }
@@ -552,7 +576,7 @@ final class TJUnitTest {
byte y = buf[ypitch * row + col]; byte y = buf[ypitch * row + col];
if (((row / blockSize) + (col / blockSize)) % 2 == 0) { if (((row / blockSize) + (col / blockSize)) % 2 == 0) {
if (row < halfway) if (row < halfway)
checkVal255(row, col, y, "Y"); checkValMax(row, col, y, "Y");
else else
checkVal0(row, col, y, "Y"); checkVal0(row, col, y, "Y");
} else { } else {
@@ -575,7 +599,7 @@ final class TJUnitTest {
} else { } else {
if (row < halfway) { if (row < halfway) {
checkVal(row, col, u, "U", 85); checkVal(row, col, u, "U", 85);
checkVal255(row, col, v, "V"); checkValMax(row, col, v, "V");
} else { } else {
checkVal0(row, col, u, "U"); checkVal0(row, col, u, "U");
checkVal(row, col, v, "V", 149); checkVal(row, col, v, "V", 149);
@@ -630,15 +654,17 @@ final class TJUnitTest {
} }
static int compTest(TJCompressor tjc, byte[] dstBuf, int w, int h, int pf, static int compTest(TJCompressor tjc, byte[] dstBuf, int w, int h, int pf,
String baseName, int subsamp, int jpegQual, int flags) String baseName) throws Exception {
throws Exception {
String tempStr; String tempStr;
byte[] srcBuf = null; Object srcBuf = null;
BufferedImage img = null; BufferedImage img = null;
String pfStr, pfStrLong; String pfStr, pfStrLong;
String buStr = (flags & TJ.FLAG_BOTTOMUP) != 0 ? "BU" : "TD"; boolean bottomUp = (tjc.get(TJ.PARAM_BOTTOMUP) == 1);
String buStrLong = (flags & TJ.FLAG_BOTTOMUP) != 0 ? int subsamp = tjc.get(TJ.PARAM_SUBSAMP);
"Bottom-Up" : "Top-Down "; int jpegQual = tjc.get(TJ.PARAM_QUALITY);
int jpegPSV = tjc.get(TJ.PARAM_LOSSLESSPSV);
String buStr = bottomUp ? "BU" : "TD";
String buStrLong = bottomUp ? "Bottom-Up" : "Top-Down ";
int size = 0, ps, imgType = pf; int size = 0, ps, imgType = pf;
if (bi) { if (bi) {
@@ -653,25 +679,31 @@ final class TJUnitTest {
if (bi) { if (bi) {
img = new BufferedImage(w, h, imgType); img = new BufferedImage(w, h, imgType);
initImg(img, pf, flags); initImg(img, pf, bottomUp);
tempStr = baseName + "_enc_" + pfStr + "_" + buStr + "_" + tempStr = baseName + "_enc" + precision + "_" + pfStr + "_" + buStr +
SUBNAME[subsamp] + "_Q" + jpegQual + ".png"; "_" + SUBNAME[subsamp] + "_Q" + jpegQual + ".png";
File file = new File(tempStr); File file = new File(tempStr);
ImageIO.write(img, "png", file); ImageIO.write(img, "png", file);
tjc.setSourceImage(img, 0, 0, 0, 0); tjc.setSourceImage(img, 0, 0, 0, 0);
} else { } else {
srcBuf = new byte[w * h * ps + 1]; if (precision == 8)
initBuf(srcBuf, w, w * ps, h, pf, flags); srcBuf = new byte[w * h * ps + 1];
tjc.setSourceImage(srcBuf, 0, 0, w, 0, h, pf); else
srcBuf = new short[w * h * ps + 1];
initBuf(srcBuf, w, w * ps, h, pf, bottomUp);
if (precision == 8)
tjc.setSourceImage((byte[])srcBuf, 0, 0, w, 0, h, pf);
else if (precision == 12)
tjc.setSourceImage12((short[])srcBuf, 0, 0, w, 0, h, pf);
else
tjc.setSourceImage16((short[])srcBuf, 0, 0, w, 0, h, pf);
} }
Arrays.fill(dstBuf, (byte)0); Arrays.fill(dstBuf, (byte)0);
tjc.setSubsamp(subsamp);
tjc.setJPEGQuality(jpegQual);
if (doYUV) { if (doYUV) {
System.out.format("%s %s -> YUV %s ... ", pfStrLong, buStrLong, System.out.format("%s %s -> YUV %s ... ", pfStrLong, buStrLong,
SUBNAME_LONG[subsamp]); SUBNAME_LONG[subsamp]);
YUVImage yuvImage = tjc.encodeYUV(yuvAlign, flags); YUVImage yuvImage = tjc.encodeYUV(yuvAlign);
if (checkBufYUV(yuvImage.getBuf(), yuvImage.getSize(), w, h, subsamp, if (checkBufYUV(yuvImage.getBuf(), yuvImage.getSize(), w, h, subsamp,
new TJScalingFactor(1, 1)) == 1) new TJScalingFactor(1, 1)) == 1)
System.out.print("Passed.\n"); System.out.print("Passed.\n");
@@ -684,14 +716,22 @@ final class TJUnitTest {
buStrLong, jpegQual); buStrLong, jpegQual);
tjc.setSourceImage(yuvImage); tjc.setSourceImage(yuvImage);
} else { } else {
System.out.format("%s %s -> %s Q%d ... ", pfStrLong, buStrLong, if (lossless)
SUBNAME_LONG[subsamp], jpegQual); System.out.format("%s %s -> LOSSLESS PSV%d ... ", pfStrLong, buStrLong,
jpegPSV);
else
System.out.format("%s %s -> %s Q%d ... ", pfStrLong, buStrLong,
SUBNAME_LONG[subsamp], jpegQual);
} }
tjc.compress(dstBuf, flags); tjc.compress(dstBuf);
size = tjc.getCompressedSize(); size = tjc.getCompressedSize();
tempStr = baseName + "_enc_" + pfStr + "_" + buStr + "_" + if (lossless)
SUBNAME[subsamp] + "_Q" + jpegQual + ".jpg"; tempStr = baseName + "_enc" + precision + "_" + pfStr + "_" + buStr +
"_LOSSLESS_PSV" + jpegPSV + ".jpg";
else
tempStr = baseName + "_enc" + precision + "_" + pfStr + "_" + buStr +
"_" + SUBNAME[subsamp] + "_Q" + jpegQual + ".jpg";
writeJPEG(dstBuf, size, tempStr); writeJPEG(dstBuf, size, tempStr);
System.out.println("Done.\n Result in " + tempStr); System.out.println("Done.\n Result in " + tempStr);
@@ -700,15 +740,15 @@ final class TJUnitTest {
static void decompTest(TJDecompressor tjd, byte[] jpegBuf, int jpegSize, static void decompTest(TJDecompressor tjd, byte[] jpegBuf, int jpegSize,
int w, int h, int pf, String baseName, int subsamp, int w, int h, int pf, String baseName, int subsamp,
int flags, TJScalingFactor sf) throws Exception { TJScalingFactor sf) throws Exception {
String pfStr, pfStrLong, tempStr; String pfStr, pfStrLong, tempStr;
String buStrLong = (flags & TJ.FLAG_BOTTOMUP) != 0 ? boolean bottomUp = (tjd.get(TJ.PARAM_BOTTOMUP) == 1);
"Bottom-Up" : "Top-Down "; String buStrLong = bottomUp ? "Bottom-Up" : "Top-Down ";
int scaledWidth = sf.getScaled(w); int scaledWidth = sf.getScaled(w);
int scaledHeight = sf.getScaled(h); int scaledHeight = sf.getScaled(h);
int temp1, temp2, imgType = pf; int temp1, temp2, imgType = pf;
BufferedImage img = null; BufferedImage img = null;
byte[] dstBuf = null; Object dstBuf = null;
if (bi) { if (bi) {
pf = biTypePF(imgType); pf = biTypePF(imgType);
@@ -720,26 +760,19 @@ final class TJUnitTest {
} }
tjd.setSourceImage(jpegBuf, jpegSize); tjd.setSourceImage(jpegBuf, jpegSize);
tjd.setScalingFactor(sf);
if (lossless && subsamp != TJ.SAMP_444 && subsamp != TJ.SAMP_GRAY) if (lossless && subsamp != TJ.SAMP_444 && subsamp != TJ.SAMP_GRAY)
subsamp = TJ.SAMP_444; subsamp = TJ.SAMP_444;
if (tjd.getWidth() != w || tjd.getHeight() != h || if (tjd.getWidth() != w || tjd.getHeight() != h ||
tjd.getSubsamp() != subsamp) tjd.get(TJ.PARAM_SUBSAMP) != subsamp)
throw new Exception("Incorrect JPEG header"); throw new Exception("Incorrect JPEG header");
temp1 = scaledWidth;
temp2 = scaledHeight;
temp1 = tjd.getScaledWidth(temp1, temp2);
temp2 = tjd.getScaledHeight(temp1, temp2);
if (temp1 != scaledWidth || temp2 != scaledHeight)
throw new Exception("Scaled size mismatch");
if (doYUV) { if (doYUV) {
System.out.format("JPEG -> YUV %s ", SUBNAME_LONG[subsamp]); System.out.format("JPEG -> YUV %s ", SUBNAME_LONG[subsamp]);
if (!sf.isOne()) if (!sf.isOne())
System.out.format("%d/%d ... ", sf.getNum(), sf.getDenom()); System.out.format("%d/%d ... ", sf.getNum(), sf.getDenom());
else System.out.print("... "); else System.out.print("... ");
YUVImage yuvImage = tjd.decompressToYUV(scaledWidth, yuvAlign, YUVImage yuvImage = tjd.decompressToYUV(yuvAlign);
scaledHeight, flags);
if (checkBufYUV(yuvImage.getBuf(), yuvImage.getSize(), scaledWidth, if (checkBufYUV(yuvImage.getBuf(), yuvImage.getSize(), scaledWidth,
scaledHeight, subsamp, sf) == 1) scaledHeight, subsamp, sf) == 1)
System.out.print("Passed.\n"); System.out.print("Passed.\n");
@@ -757,23 +790,28 @@ final class TJUnitTest {
else System.out.print("... "); else System.out.print("... ");
} }
if (bi) if (bi)
img = tjd.decompress(scaledWidth, scaledHeight, imgType, flags); img = tjd.decompress8(imgType);
else else {
dstBuf = tjd.decompress(scaledWidth, 0, scaledHeight, pf, flags); if (precision == 8)
dstBuf = tjd.decompress8(0, pf);
else if (precision == 12)
dstBuf = tjd.decompress12(0, pf);
else
dstBuf = tjd.decompress16(0, pf);
}
if (bi) { if (bi) {
tempStr = baseName + "_dec_" + pfStr + "_" + tempStr = baseName + "_dec_" + pfStr + "_" + (bottomUp ? "BU" : "TD") +
(((flags & TJ.FLAG_BOTTOMUP) != 0) ? "BU" : "TD") + "_" + "_" + SUBNAME[subsamp] + "_" +
SUBNAME[subsamp] + "_" +
(double)sf.getNum() / (double)sf.getDenom() + "x" + ".png"; (double)sf.getNum() / (double)sf.getDenom() + "x" + ".png";
File file = new File(tempStr); File file = new File(tempStr);
ImageIO.write(img, "png", file); ImageIO.write(img, "png", file);
} }
if ((bi && checkImg(img, pf, subsamp, sf, flags) == 1) || if ((bi && checkImg(img, pf, subsamp, sf, bottomUp) == 1) ||
(!bi && checkBuf(dstBuf, scaledWidth, (!bi && checkBuf(dstBuf, scaledWidth,
scaledWidth * TJ.getPixelSize(pf), scaledHeight, pf, scaledWidth * TJ.getPixelSize(pf), scaledHeight, pf,
subsamp, sf, flags) == 1)) subsamp, sf, bottomUp) == 1))
System.out.print("Passed.\n"); System.out.print("Passed.\n");
else { else {
System.out.print("FAILED!\n"); System.out.print("FAILED!\n");
@@ -782,14 +820,13 @@ final class TJUnitTest {
} }
static void decompTest(TJDecompressor tjd, byte[] jpegBuf, int jpegSize, static void decompTest(TJDecompressor tjd, byte[] jpegBuf, int jpegSize,
int w, int h, int pf, String baseName, int subsamp, int w, int h, int pf, String baseName, int subsamp)
int flags) throws Exception { throws Exception {
int i; int i;
TJScalingFactor sf1 = new TJScalingFactor(1, 1);
if (lossless) { if (lossless) {
decompTest(tjd, jpegBuf, jpegSize, w, h, pf, baseName, subsamp, flags, decompTest(tjd, jpegBuf, jpegSize, w, h, pf, baseName, subsamp,
sf1); TJ.UNSCALED);
return; return;
} }
@@ -802,8 +839,7 @@ final class TJUnitTest {
(denom == 2 || denom == 1)) || (denom == 2 || denom == 1)) ||
(subsamp != TJ.SAMP_411 && num == 1 && (subsamp != TJ.SAMP_411 && num == 1 &&
(denom == 4 || denom == 2 || denom == 1))) (denom == 4 || denom == 2 || denom == 1)))
decompTest(tjd, jpegBuf, jpegSize, w, h, pf, baseName, subsamp, decompTest(tjd, jpegBuf, jpegSize, w, h, pf, baseName, subsamp, sf[i]);
flags, sf[i]);
} }
} }
@@ -811,7 +847,7 @@ final class TJUnitTest {
throws Exception { throws Exception {
TJCompressor tjc = null; TJCompressor tjc = null;
TJDecompressor tjd = null; TJDecompressor tjd = null;
int size, quality = 100; int size;
byte[] dstBuf; byte[] dstBuf;
if (lossless && subsamp != TJ.SAMP_GRAY) if (lossless && subsamp != TJ.SAMP_GRAY)
@@ -823,26 +859,28 @@ final class TJUnitTest {
tjc = new TJCompressor(); tjc = new TJCompressor();
tjd = new TJDecompressor(); tjd = new TJDecompressor();
if (lossless) {
tjc.set(TJ.PARAM_LOSSLESS, 1);
tjc.set(TJ.PARAM_LOSSLESSPSV, ((psv++ - 1) % 7) + 1);
} else {
tjc.set(TJ.PARAM_QUALITY, 100);
if (subsamp == TJ.SAMP_422 || subsamp == TJ.SAMP_420 ||
subsamp == TJ.SAMP_440 || subsamp == TJ.SAMP_411)
tjd.set(TJ.PARAM_FASTUPSAMPLE, 1);
}
tjc.set(TJ.PARAM_SUBSAMP, subsamp);
for (int pf : formats) { for (int pf : formats) {
if (pf < 0) continue; if (pf < 0) continue;
for (int i = 0; i < 2; i++) { for (int i = 0; i < 2; i++) {
int flags = 0; tjc.set(TJ.PARAM_BOTTOMUP, i == 1 ? 1 : 0);
if (lossless) { tjd.set(TJ.PARAM_BOTTOMUP, i == 1 ? 1 : 0);
flags |= TJ.FLAG_LOSSLESS; size = compTest(tjc, dstBuf, w, h, pf, baseName);
quality = (((psv++ - 1) % 7) + 1) * 10; decompTest(tjd, dstBuf, size, w, h, pf, baseName, subsamp);
}
if (subsamp == TJ.SAMP_422 || subsamp == TJ.SAMP_420 ||
subsamp == TJ.SAMP_440 || subsamp == TJ.SAMP_411)
flags |= TJ.FLAG_FASTUPSAMPLE;
if (i == 1)
flags |= TJ.FLAG_BOTTOMUP;
size = compTest(tjc, dstBuf, w, h, pf, baseName, subsamp, quality,
flags);
decompTest(tjd, dstBuf, size, w, h, pf, baseName, subsamp, flags);
if (pf >= TJ.PF_RGBX && pf <= TJ.PF_XRGB && !bi) { if (pf >= TJ.PF_RGBX && pf <= TJ.PF_XRGB && !bi) {
System.out.print("\n"); System.out.print("\n");
decompTest(tjd, dstBuf, size, w, h, pf + (TJ.PF_RGBA - TJ.PF_RGBX), decompTest(tjd, dstBuf, size, w, h, pf + (TJ.PF_RGBA - TJ.PF_RGBX),
baseName, subsamp, flags); baseName, subsamp);
} }
System.out.print("\n"); System.out.print("\n");
} }
@@ -907,22 +945,25 @@ final class TJUnitTest {
} }
static void bufSizeTest() throws Exception { static void bufSizeTest() throws Exception {
int w, h, i, subsamp, flags = 0, quality = 100, numSamp = TJ.NUMSAMP; int w, h, i, subsamp, numSamp = TJ.NUMSAMP;
byte[] srcBuf, dstBuf = null; byte[] srcBuf, dstBuf = null;
YUVImage dstImage = null; YUVImage dstImage = null;
TJCompressor tjc = null; TJCompressor tjc = null;
Random r = new Random(); Random r = new Random();
try { try {
if (lossless) {
flags |= TJ.FLAG_LOSSLESS;
quality = (((psv++ - 1) % 7) + 1) * 10;
numSamp = 1;
}
tjc = new TJCompressor(); tjc = new TJCompressor();
if (lossless) {
tjc.set(TJ.PARAM_LOSSLESS, 1);
tjc.set(TJ.PARAM_LOSSLESSPSV, ((psv++ - 1) % 7) + 1);
numSamp = 1;
} else
tjc.set(TJ.PARAM_QUALITY, 100);
System.out.println("Buffer size regression test"); System.out.println("Buffer size regression test");
for (subsamp = 0; subsamp < numSamp; subsamp++) { for (subsamp = 0; subsamp < numSamp; subsamp++) {
tjc.set(TJ.PARAM_SUBSAMP, subsamp);
for (w = 1; w < 48; w++) { for (w = 1; w < 48; w++) {
int maxh = (w == 1) ? 2048 : 48; int maxh = (w == 1) ? 2048 : 48;
for (h = 1; h < maxh; h++) { for (h = 1; h < maxh; h++) {
@@ -937,12 +978,10 @@ final class TJUnitTest {
srcBuf[i] = (byte)(r.nextInt(2) * 255); srcBuf[i] = (byte)(r.nextInt(2) * 255);
} }
tjc.setSourceImage(srcBuf, 0, 0, w, 0, h, TJ.PF_BGRX); tjc.setSourceImage(srcBuf, 0, 0, w, 0, h, TJ.PF_BGRX);
tjc.setSubsamp(subsamp);
tjc.setJPEGQuality(quality);
if (doYUV) if (doYUV)
tjc.encodeYUV(dstImage, 0); tjc.encodeYUV(dstImage);
else else
tjc.compress(dstBuf, flags); tjc.compress(dstBuf);
srcBuf = new byte[h * w * 4]; srcBuf = new byte[h * w * 4];
if (doYUV) if (doYUV)
@@ -954,9 +993,9 @@ final class TJUnitTest {
} }
tjc.setSourceImage(srcBuf, 0, 0, h, 0, w, TJ.PF_BGRX); tjc.setSourceImage(srcBuf, 0, 0, h, 0, w, TJ.PF_BGRX);
if (doYUV) if (doYUV)
tjc.encodeYUV(dstImage, 0); tjc.encodeYUV(dstImage);
else else
tjc.compress(dstBuf, flags); tjc.compress(dstBuf);
} }
dstImage = null; dstImage = null;
dstBuf = null; dstBuf = null;
@@ -984,43 +1023,67 @@ final class TJUnitTest {
else if (argv[i].equalsIgnoreCase("-bi")) { else if (argv[i].equalsIgnoreCase("-bi")) {
bi = true; bi = true;
testName = "javabitest"; testName = "javabitest";
} else if (argv[i].equalsIgnoreCase("-precision") &&
i < argv.length - 1) {
int tempi = -1;
try {
tempi = Integer.parseInt(argv[++i]);
} catch (NumberFormatException e) {}
if (tempi != 8 && tempi != 12 && tempi != 16)
usage();
precision = tempi;
if (precision == 16)
lossless = true;
} else } else
usage(); usage();
} }
if (lossless && doYUV) if (lossless && doYUV)
throw new Exception("Lossless JPEG and YUV encoding/decoding are incompatible."); throw new Exception("Lossless JPEG and YUV encoding/decoding are incompatible.");
if (precision != 8 && doYUV)
throw new Exception("YUV encoding/decoding requires 8-bit data precision.");
if (precision != 8 && bi)
throw new Exception("BufferedImage support requires 8-bit data precision.");
System.out.format("Testing %d-bit precision\n", precision);
sampleSize = (precision == 8 ? 1 : 2);
maxSample = (1 << precision) - 1;
tolerance = (lossless ? 0 : (precision > 8 ? 2 : 1));
redToY = (19595 * maxSample) >> 16;
yellowToY = (58065 * maxSample) >> 16;
if (doYUV) if (doYUV)
FORMATS_4BYTE[4] = -1; FORMATS_4SAMPLE[4] = -1;
overflowTest(); overflowTest();
doTest(35, 39, bi ? FORMATS_3BYTEBI : FORMATS_3BYTE, TJ.SAMP_444, doTest(35, 39, bi ? FORMATS_3BYTEBI : FORMATS_3SAMPLE, TJ.SAMP_444,
testName); testName);
doTest(39, 41, bi ? FORMATS_4BYTEBI : FORMATS_4BYTE, TJ.SAMP_444, doTest(39, 41, bi ? FORMATS_4BYTEBI : FORMATS_4SAMPLE, TJ.SAMP_444,
testName); testName);
doTest(41, 35, bi ? FORMATS_3BYTEBI : FORMATS_3BYTE, TJ.SAMP_422, doTest(41, 35, bi ? FORMATS_3BYTEBI : FORMATS_3SAMPLE, TJ.SAMP_422,
testName); testName);
if (!lossless) { if (!lossless) {
doTest(35, 39, bi ? FORMATS_4BYTEBI : FORMATS_4BYTE, TJ.SAMP_422, doTest(35, 39, bi ? FORMATS_4BYTEBI : FORMATS_4SAMPLE, TJ.SAMP_422,
testName); testName);
doTest(39, 41, bi ? FORMATS_3BYTEBI : FORMATS_3BYTE, TJ.SAMP_420, doTest(39, 41, bi ? FORMATS_3BYTEBI : FORMATS_3SAMPLE, TJ.SAMP_420,
testName); testName);
doTest(41, 35, bi ? FORMATS_4BYTEBI : FORMATS_4BYTE, TJ.SAMP_420, doTest(41, 35, bi ? FORMATS_4BYTEBI : FORMATS_4SAMPLE, TJ.SAMP_420,
testName); testName);
doTest(35, 39, bi ? FORMATS_3BYTEBI : FORMATS_3BYTE, TJ.SAMP_440, doTest(35, 39, bi ? FORMATS_3BYTEBI : FORMATS_3SAMPLE, TJ.SAMP_440,
testName); testName);
doTest(39, 41, bi ? FORMATS_4BYTEBI : FORMATS_4BYTE, TJ.SAMP_440, doTest(39, 41, bi ? FORMATS_4BYTEBI : FORMATS_4SAMPLE, TJ.SAMP_440,
testName); testName);
doTest(41, 35, bi ? FORMATS_3BYTEBI : FORMATS_3BYTE, TJ.SAMP_411, doTest(41, 35, bi ? FORMATS_3BYTEBI : FORMATS_3SAMPLE, TJ.SAMP_411,
testName); testName);
doTest(35, 39, bi ? FORMATS_4BYTEBI : FORMATS_4BYTE, TJ.SAMP_411, doTest(35, 39, bi ? FORMATS_4BYTEBI : FORMATS_4SAMPLE, TJ.SAMP_411,
testName); testName);
} }
doTest(39, 41, bi ? FORMATS_GRAYBI : FORMATS_GRAY, TJ.SAMP_GRAY, doTest(39, 41, bi ? FORMATS_GRAYBI : FORMATS_GRAY, TJ.SAMP_GRAY,
testName); testName);
if (!lossless) { if (!lossless) {
doTest(41, 35, bi ? FORMATS_3BYTEBI : FORMATS_3BYTE, TJ.SAMP_GRAY, doTest(41, 35, bi ? FORMATS_3BYTEBI : FORMATS_3SAMPLE, TJ.SAMP_GRAY,
testName); testName);
FORMATS_4BYTE[4] = -1; FORMATS_4SAMPLE[4] = -1;
doTest(35, 39, bi ? FORMATS_4BYTEBI : FORMATS_4BYTE, TJ.SAMP_GRAY, doTest(35, 39, bi ? FORMATS_4BYTEBI : FORMATS_4SAMPLE, TJ.SAMP_GRAY,
testName); testName);
} }
if (!bi) if (!bi)

View File

@@ -1,24 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>All Classes</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
</head>
<body>
<h1 class="bar">All Classes</h1>
<div class="indexContainer">
<ul>
<li><a href="org/libjpegturbo/turbojpeg/TJ.html" title="class in org.libjpegturbo.turbojpeg" target="classFrame">TJ</a></li>
<li><a href="org/libjpegturbo/turbojpeg/TJCompressor.html" title="class in org.libjpegturbo.turbojpeg" target="classFrame">TJCompressor</a></li>
<li><a href="org/libjpegturbo/turbojpeg/TJCustomFilter.html" title="interface in org.libjpegturbo.turbojpeg" target="classFrame"><i>TJCustomFilter</i></a></li>
<li><a href="org/libjpegturbo/turbojpeg/TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg" target="classFrame">TJDecompressor</a></li>
<li><a href="org/libjpegturbo/turbojpeg/TJException.html" title="class in org.libjpegturbo.turbojpeg" target="classFrame">TJException</a></li>
<li><a href="org/libjpegturbo/turbojpeg/TJScalingFactor.html" title="class in org.libjpegturbo.turbojpeg" target="classFrame">TJScalingFactor</a></li>
<li><a href="org/libjpegturbo/turbojpeg/TJTransform.html" title="class in org.libjpegturbo.turbojpeg" target="classFrame">TJTransform</a></li>
<li><a href="org/libjpegturbo/turbojpeg/TJTransformer.html" title="class in org.libjpegturbo.turbojpeg" target="classFrame">TJTransformer</a></li>
<li><a href="org/libjpegturbo/turbojpeg/YUVImage.html" title="class in org.libjpegturbo.turbojpeg" target="classFrame">YUVImage</a></li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,215 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>All Classes</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="jquery/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="jquery/jquery-ui.min.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="All Classes";
}
}
catch(err) {
}
//-->
var data = {"i0":2,"i1":2,"i2":1,"i3":2,"i4":8,"i5":2,"i6":2,"i7":2,"i8":2};
var tabs = {65535:["t0","All Classes"],1:["t1","Interface Summary"],2:["t2","Class Summary"],8:["t4","Exception Summary"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "./";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="org/libjpegturbo/turbojpeg/package-summary.html">Package</a></li>
<li>Class</li>
<li><a href="org/libjpegturbo/turbojpeg/package-tree.html">Tree</a></li>
<li><a href="deprecated-list.html">Deprecated</a></li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<main role="main">
<div class="header">
<h1 title="All&amp;nbsp;Classes" class="title">All&nbsp;Classes</h1>
</div>
<div class="allClassesContainer">
<ul class="blockList">
<li class="blockList">
<table class="typeSummary">
<caption><span id="t0" class="activeTableTab"><span>All Classes</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Interface Summary</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Class Summary</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Exception Summary</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><a href="org/libjpegturbo/turbojpeg/TJ.html" title="class in org.libjpegturbo.turbojpeg">TJ</a></td>
<th class="colLast" scope="row">
<div class="block">TurboJPEG utility class (cannot be instantiated)</div>
</th>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><a href="org/libjpegturbo/turbojpeg/TJCompressor.html" title="class in org.libjpegturbo.turbojpeg">TJCompressor</a></td>
<th class="colLast" scope="row">
<div class="block">TurboJPEG compressor</div>
</th>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><a href="org/libjpegturbo/turbojpeg/TJCustomFilter.html" title="interface in org.libjpegturbo.turbojpeg">TJCustomFilter</a></td>
<th class="colLast" scope="row">
<div class="block">Custom filter callback interface</div>
</th>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><a href="org/libjpegturbo/turbojpeg/TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg">TJDecompressor</a></td>
<th class="colLast" scope="row">
<div class="block">TurboJPEG decompressor</div>
</th>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><a href="org/libjpegturbo/turbojpeg/TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></td>
<th class="colLast" scope="row">&nbsp;</th>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><a href="org/libjpegturbo/turbojpeg/TJScalingFactor.html" title="class in org.libjpegturbo.turbojpeg">TJScalingFactor</a></td>
<th class="colLast" scope="row">
<div class="block">Fractional scaling factor</div>
</th>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><a href="org/libjpegturbo/turbojpeg/TJTransform.html" title="class in org.libjpegturbo.turbojpeg">TJTransform</a></td>
<th class="colLast" scope="row">
<div class="block">Lossless transform parameters</div>
</th>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><a href="org/libjpegturbo/turbojpeg/TJTransformer.html" title="class in org.libjpegturbo.turbojpeg">TJTransformer</a></td>
<th class="colLast" scope="row">
<div class="block">TurboJPEG lossless transformer</div>
</th>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><a href="org/libjpegturbo/turbojpeg/YUVImage.html" title="class in org.libjpegturbo.turbojpeg">YUVImage</a></td>
<th class="colLast" scope="row">
<div class="block">This class encapsulates a planar YUV image and the metadata
associated with it.</div>
</th>
</tr>
</table>
</li>
</ul>
</div>
</main>
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="org/libjpegturbo/turbojpeg/package-summary.html">Package</a></li>
<li>Class</li>
<li><a href="org/libjpegturbo/turbojpeg/package-tree.html">Tree</a></li>
<li><a href="deprecated-list.html">Deprecated</a></li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body>
</html>

View File

@@ -1,17 +1,29 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!DOCTYPE HTML>
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc -->
<title>All Classes</title> <title>All Classes</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="jquery/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="jquery/jquery-ui.min.js"></script>
</head> </head>
<body> <body>
<h1 class="bar">All Classes</h1> <h1 class="bar">All&nbsp;Classes</h1>
<div class="indexContainer"> <main role="main" class="indexContainer">
<ul> <ul>
<li><a href="org/libjpegturbo/turbojpeg/TJ.html" title="class in org.libjpegturbo.turbojpeg">TJ</a></li> <li><a href="org/libjpegturbo/turbojpeg/TJ.html" title="class in org.libjpegturbo.turbojpeg">TJ</a></li>
<li><a href="org/libjpegturbo/turbojpeg/TJCompressor.html" title="class in org.libjpegturbo.turbojpeg">TJCompressor</a></li> <li><a href="org/libjpegturbo/turbojpeg/TJCompressor.html" title="class in org.libjpegturbo.turbojpeg">TJCompressor</a></li>
<li><a href="org/libjpegturbo/turbojpeg/TJCustomFilter.html" title="interface in org.libjpegturbo.turbojpeg"><i>TJCustomFilter</i></a></li> <li><a href="org/libjpegturbo/turbojpeg/TJCustomFilter.html" title="interface in org.libjpegturbo.turbojpeg"><span class="interfaceName">TJCustomFilter</span></a></li>
<li><a href="org/libjpegturbo/turbojpeg/TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg">TJDecompressor</a></li> <li><a href="org/libjpegturbo/turbojpeg/TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg">TJDecompressor</a></li>
<li><a href="org/libjpegturbo/turbojpeg/TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></li> <li><a href="org/libjpegturbo/turbojpeg/TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></li>
<li><a href="org/libjpegturbo/turbojpeg/TJScalingFactor.html" title="class in org.libjpegturbo.turbojpeg">TJScalingFactor</a></li> <li><a href="org/libjpegturbo/turbojpeg/TJScalingFactor.html" title="class in org.libjpegturbo.turbojpeg">TJScalingFactor</a></li>
@@ -19,6 +31,6 @@
<li><a href="org/libjpegturbo/turbojpeg/TJTransformer.html" title="class in org.libjpegturbo.turbojpeg">TJTransformer</a></li> <li><a href="org/libjpegturbo/turbojpeg/TJTransformer.html" title="class in org.libjpegturbo.turbojpeg">TJTransformer</a></li>
<li><a href="org/libjpegturbo/turbojpeg/YUVImage.html" title="class in org.libjpegturbo.turbojpeg">YUVImage</a></li> <li><a href="org/libjpegturbo/turbojpeg/YUVImage.html" title="class in org.libjpegturbo.turbojpeg">YUVImage</a></li>
</ul> </ul>
</div> </main>
</body> </body>
</html> </html>

View File

@@ -0,0 +1,162 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>All Packages</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="jquery/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="jquery/jquery-ui.min.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="All Packages";
}
}
catch(err) {
}
//-->
var pathtoroot = "./";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="org/libjpegturbo/turbojpeg/package-summary.html">Package</a></li>
<li>Class</li>
<li><a href="org/libjpegturbo/turbojpeg/package-tree.html">Tree</a></li>
<li><a href="deprecated-list.html">Deprecated</a></li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<main role="main">
<div class="header">
<h1 title="All&amp;nbsp;Packages" class="title">All&nbsp;Packages</h1>
</div>
<div class="allPackagesContainer">
<ul class="blockList">
<li class="blockList">
<table class="packagesSummary">
<caption><span>Package Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Package</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="org/libjpegturbo/turbojpeg/package-summary.html">org.libjpegturbo.turbojpeg</a></th>
<td class="colLast">&nbsp;</td>
</tr>
</tbody>
</table>
</li>
</ul>
</div>
</main>
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="org/libjpegturbo/turbojpeg/package-summary.html">Package</a></li>
<li>Class</li>
<li><a href="org/libjpegturbo/turbojpeg/package-tree.html">Tree</a></li>
<li><a href="deprecated-list.html">Deprecated</a></li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body>
</html>

View File

@@ -1,9 +1,21 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!DOCTYPE HTML>
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc -->
<title>Constant Field Values</title> <title>Constant Field Values</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="jquery/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="jquery/jquery-ui.min.js"></script>
</head> </head>
<body> <body>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -15,14 +27,21 @@
catch(err) { catch(err) {
} }
//--> //-->
</script> var pathtoroot = "./";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript> <noscript>
<div>JavaScript is disabled on your browser.</div> <div>JavaScript is disabled on your browser.</div>
</noscript> </noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= --> <!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top"> <div class="topNav"><a id="navbar.top">
<!-- --> <!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow"> </a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- --> <!-- -->
</a> </a>
<ul class="navList" title="Navigation"> <ul class="navList" title="Navigation">
@@ -35,16 +54,14 @@
</ul> </ul>
</div> </div>
<div class="subNav"> <div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?constant-values.html" target="_top">Frames</a></li>
<li><a href="constant-values.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top"> <ul class="navList" id="allclasses_navbar_top">
<li><a href="allclasses-noframe.html">All Classes</a></li> <li><a href="allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul> </ul>
<div> <div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -57,438 +74,613 @@
} }
//--> //-->
</script> </script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div> </div>
<a name="skip-navbar_top"> <a id="skip.navbar.top">
<!-- --> <!-- -->
</a></div> </a></div>
<!-- ========= END OF TOP NAVBAR ========= --> <!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<main role="main">
<div class="header"> <div class="header">
<h1 title="Constant Field Values" class="title">Constant Field Values</h1> <h1 title="Constant Field Values" class="title">Constant Field Values</h1>
<section>
<h2 title="Contents">Contents</h2> <h2 title="Contents">Contents</h2>
<ul> <ul>
<li><a href="#org.libjpegturbo">org.libjpegturbo.*</a></li> <li><a href="#org.libjpegturbo">org.libjpegturbo.*</a></li>
</ul> </ul>
</section>
</div> </div>
<div class="constantValuesContainer"><a name="org.libjpegturbo"> <div class="constantValuesContainer"><a id="org.libjpegturbo">
<!-- --> <!-- -->
</a> </a>
<section>
<h2 title="org.libjpegturbo">org.libjpegturbo.*</h2> <h2 title="org.libjpegturbo">org.libjpegturbo.*</h2>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<table border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values"> <table class="constantsSummary">
<caption><span>org.libjpegturbo.turbojpeg.<a href="org/libjpegturbo/turbojpeg/TJ.html" title="class in org.libjpegturbo.turbojpeg">TJ</a></span><span class="tabEnd">&nbsp;</span></caption> <caption><span>org.libjpegturbo.turbojpeg.<a href="org/libjpegturbo/turbojpeg/TJ.html" title="class in org.libjpegturbo.turbojpeg">TJ</a></span><span class="tabEnd">&nbsp;</span></caption>
<tr> <tr>
<th class="colFirst" scope="col">Modifier and Type</th> <th class="colFirst" scope="col">Modifier and Type</th>
<th scope="col">Constant Field</th> <th class="colSecond" scope="col">Constant Field</th>
<th class="colLast" scope="col">Value</th> <th class="colLast" scope="col">Value</th>
</tr> </tr>
<tbody> <tbody>
<tr class="altColor"> <tr class="altColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.CS_CMYK"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.CS_CMYK">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#CS_CMYK">CS_CMYK</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#CS_CMYK">CS_CMYK</a></code></th>
<td class="colLast"><code>3</code></td> <td class="colLast"><code>3</code></td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.CS_GRAY"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.CS_GRAY">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#CS_GRAY">CS_GRAY</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#CS_GRAY">CS_GRAY</a></code></th>
<td class="colLast"><code>2</code></td> <td class="colLast"><code>2</code></td>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.CS_RGB"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.CS_RGB">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#CS_RGB">CS_RGB</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#CS_RGB">CS_RGB</a></code></th>
<td class="colLast"><code>0</code></td> <td class="colLast"><code>0</code></td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.CS_YCbCr"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.CS_YCbCr">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#CS_YCbCr">CS_YCbCr</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#CS_YCbCr">CS_YCbCr</a></code></th>
<td class="colLast"><code>1</code></td> <td class="colLast"><code>1</code></td>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.CS_YCCK"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.CS_YCCK">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#CS_YCCK">CS_YCCK</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#CS_YCCK">CS_YCCK</a></code></th>
<td class="colLast"><code>4</code></td> <td class="colLast"><code>4</code></td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.ERR_FATAL"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.ERR_FATAL">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#ERR_FATAL">ERR_FATAL</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#ERR_FATAL">ERR_FATAL</a></code></th>
<td class="colLast"><code>1</code></td> <td class="colLast"><code>1</code></td>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.ERR_WARNING"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.ERR_WARNING">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#ERR_WARNING">ERR_WARNING</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#ERR_WARNING">ERR_WARNING</a></code></th>
<td class="colLast"><code>0</code></td> <td class="colLast"><code>0</code></td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.FLAG_ACCURATEDCT"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.FLAG_ACCURATEDCT">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#FLAG_ACCURATEDCT">FLAG_ACCURATEDCT</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#FLAG_ACCURATEDCT">FLAG_ACCURATEDCT</a></code></th>
<td class="colLast"><code>4096</code></td> <td class="colLast"><code>4096</code></td>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.FLAG_ARITHMETIC"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.FLAG_BOTTOMUP">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#FLAG_ARITHMETIC">FLAG_ARITHMETIC</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#FLAG_BOTTOMUP">FLAG_BOTTOMUP</a></code></th>
<td class="colLast"><code>65536</code></td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.FLAG_BOTTOMUP">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#FLAG_BOTTOMUP">FLAG_BOTTOMUP</a></code></td>
<td class="colLast"><code>2</code></td> <td class="colLast"><code>2</code></td>
</tr> </tr>
<tr class="altColor"> <tr class="rowColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.FLAG_FASTDCT"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.FLAG_FASTDCT">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#FLAG_FASTDCT">FLAG_FASTDCT</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#FLAG_FASTDCT">FLAG_FASTDCT</a></code></th>
<td class="colLast"><code>2048</code></td> <td class="colLast"><code>2048</code></td>
</tr> </tr>
<tr class="rowColor"> <tr class="altColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.FLAG_FASTUPSAMPLE"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.FLAG_FASTUPSAMPLE">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#FLAG_FASTUPSAMPLE">FLAG_FASTUPSAMPLE</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#FLAG_FASTUPSAMPLE">FLAG_FASTUPSAMPLE</a></code></th>
<td class="colLast"><code>256</code></td> <td class="colLast"><code>256</code></td>
</tr> </tr>
<tr class="altColor"> <tr class="rowColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.FLAG_LIMITSCANS"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.FLAG_LIMITSCANS">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#FLAG_LIMITSCANS">FLAG_LIMITSCANS</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#FLAG_LIMITSCANS">FLAG_LIMITSCANS</a></code></th>
<td class="colLast"><code>32768</code></td> <td class="colLast"><code>32768</code></td>
</tr> </tr>
<tr class="rowColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.FLAG_LOSSLESS">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#FLAG_LOSSLESS">FLAG_LOSSLESS</a></code></td>
<td class="colLast"><code>131072</code></td>
</tr>
<tr class="altColor"> <tr class="altColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.FLAG_PROGRESSIVE"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.FLAG_PROGRESSIVE">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#FLAG_PROGRESSIVE">FLAG_PROGRESSIVE</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#FLAG_PROGRESSIVE">FLAG_PROGRESSIVE</a></code></th>
<td class="colLast"><code>16384</code></td> <td class="colLast"><code>16384</code></td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.FLAG_STOPONWARNING"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.FLAG_STOPONWARNING">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#FLAG_STOPONWARNING">FLAG_STOPONWARNING</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#FLAG_STOPONWARNING">FLAG_STOPONWARNING</a></code></th>
<td class="colLast"><code>8192</code></td> <td class="colLast"><code>8192</code></td>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.NUMCS"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.NUMCS">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#NUMCS">NUMCS</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#NUMCS">NUMCS</a></code></th>
<td class="colLast"><code>5</code></td> <td class="colLast"><code>5</code></td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.NUMERR"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.NUMERR">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#NUMERR">NUMERR</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#NUMERR">NUMERR</a></code></th>
<td class="colLast"><code>2</code></td> <td class="colLast"><code>2</code></td>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.NUMPF"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.NUMPF">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#NUMPF">NUMPF</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#NUMPF">NUMPF</a></code></th>
<td class="colLast"><code>12</code></td> <td class="colLast"><code>12</code></td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.NUMSAMP"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.NUMSAMP">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#NUMSAMP">NUMSAMP</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#NUMSAMP">NUMSAMP</a></code></th>
<td class="colLast"><code>6</code></td> <td class="colLast"><code>6</code></td>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.PF_ABGR"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PARAM_ARITHMETIC">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PF_ABGR">PF_ABGR</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_ARITHMETIC">PARAM_ARITHMETIC</a></code></th>
<td class="colLast"><code>9</code></td> <td class="colLast"><code>14</code></td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.PF_ARGB"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PARAM_BOTTOMUP">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PF_ARGB">PF_ARGB</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_BOTTOMUP">PARAM_BOTTOMUP</a></code></th>
<td class="colLast"><code>10</code></td>
</tr>
<tr class="altColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.PF_BGR">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PF_BGR">PF_BGR</a></code></td>
<td class="colLast"><code>1</code></td> <td class="colLast"><code>1</code></td>
</tr> </tr>
<tr class="rowColor"> <tr class="altColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.PF_BGRA"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PARAM_COLORSPACE">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PF_BGRA">PF_BGRA</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_COLORSPACE">PARAM_COLORSPACE</a></code></th>
<td class="colLast"><code>8</code></td> <td class="colLast"><code>8</code></td>
</tr> </tr>
<tr class="altColor"> <tr class="rowColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.PF_BGRX"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PARAM_DENSITYUNITS">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PF_BGRX">PF_BGRX</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_DENSITYUNITS">PARAM_DENSITYUNITS</a></code></th>
<td class="colLast"><code>3</code></td> <td class="colLast"><code>22</code></td>
</tr>
<tr class="altColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PARAM_FASTDCT">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_FASTDCT">PARAM_FASTDCT</a></code></th>
<td class="colLast"><code>10</code></td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.PF_CMYK"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PARAM_FASTUPSAMPLE">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PF_CMYK">PF_CMYK</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_FASTUPSAMPLE">PARAM_FASTUPSAMPLE</a></code></th>
<td class="colLast"><code>9</code></td>
</tr>
<tr class="altColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PARAM_JPEGHEIGHT">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_JPEGHEIGHT">PARAM_JPEGHEIGHT</a></code></th>
<td class="colLast"><code>6</code></td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PARAM_JPEGWIDTH">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_JPEGWIDTH">PARAM_JPEGWIDTH</a></code></th>
<td class="colLast"><code>5</code></td>
</tr>
<tr class="altColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PARAM_LOSSLESS">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_LOSSLESS">PARAM_LOSSLESS</a></code></th>
<td class="colLast"><code>15</code></td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PARAM_LOSSLESSPSV">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_LOSSLESSPSV">PARAM_LOSSLESSPSV</a></code></th>
<td class="colLast"><code>16</code></td>
</tr>
<tr class="altColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PARAM_LOSSLESSPT">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_LOSSLESSPT">PARAM_LOSSLESSPT</a></code></th>
<td class="colLast"><code>17</code></td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PARAM_OPTIMIZE">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_OPTIMIZE">PARAM_OPTIMIZE</a></code></th>
<td class="colLast"><code>11</code></td> <td class="colLast"><code>11</code></td>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.PF_GRAY"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PARAM_PRECISION">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PF_GRAY">PF_GRAY</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_PRECISION">PARAM_PRECISION</a></code></th>
<td class="colLast"><code>6</code></td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.PF_RGB">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PF_RGB">PF_RGB</a></code></td>
<td class="colLast"><code>0</code></td>
</tr>
<tr class="altColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.PF_RGBA">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PF_RGBA">PF_RGBA</a></code></td>
<td class="colLast"><code>7</code></td> <td class="colLast"><code>7</code></td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.PF_RGBX"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PARAM_PROGRESSIVE">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PF_RGBX">PF_RGBX</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_PROGRESSIVE">PARAM_PROGRESSIVE</a></code></th>
<td class="colLast"><code>2</code></td> <td class="colLast"><code>12</code></td>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.PF_XBGR"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PARAM_QUALITY">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PF_XBGR">PF_XBGR</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_QUALITY">PARAM_QUALITY</a></code></th>
<td class="colLast"><code>4</code></td> <td class="colLast"><code>3</code></td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.PF_XRGB"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PARAM_RESTARTBLOCKS">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PF_XRGB">PF_XRGB</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_RESTARTBLOCKS">PARAM_RESTARTBLOCKS</a></code></th>
<td class="colLast"><code>5</code></td> <td class="colLast"><code>18</code></td>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.SAMP_411"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PARAM_RESTARTROWS">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#SAMP_411">SAMP_411</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_RESTARTROWS">PARAM_RESTARTROWS</a></code></th>
<td class="colLast"><code>5</code></td> <td class="colLast"><code>19</code></td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.SAMP_420"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PARAM_SCANLIMIT">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#SAMP_420">SAMP_420</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_SCANLIMIT">PARAM_SCANLIMIT</a></code></th>
<td class="colLast"><code>2</code></td> <td class="colLast"><code>13</code></td>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.SAMP_422"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PARAM_STOPONWARNING">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#SAMP_422">SAMP_422</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_STOPONWARNING">PARAM_STOPONWARNING</a></code></th>
<td class="colLast"><code>1</code></td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.SAMP_440">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#SAMP_440">SAMP_440</a></code></td>
<td class="colLast"><code>4</code></td>
</tr>
<tr class="altColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.SAMP_444">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#SAMP_444">SAMP_444</a></code></td>
<td class="colLast"><code>0</code></td> <td class="colLast"><code>0</code></td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJ.SAMP_GRAY"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PARAM_SUBSAMP">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJ.html#SAMP_GRAY">SAMP_GRAY</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_SUBSAMP">PARAM_SUBSAMP</a></code></th>
<td class="colLast"><code>4</code></td>
</tr>
<tr class="altColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PARAM_XDENSITY">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_XDENSITY">PARAM_XDENSITY</a></code></th>
<td class="colLast"><code>20</code></td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PARAM_YDENSITY">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_YDENSITY">PARAM_YDENSITY</a></code></th>
<td class="colLast"><code>21</code></td>
</tr>
<tr class="altColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PF_ABGR">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PF_ABGR">PF_ABGR</a></code></th>
<td class="colLast"><code>9</code></td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PF_ARGB">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PF_ARGB">PF_ARGB</a></code></th>
<td class="colLast"><code>10</code></td>
</tr>
<tr class="altColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PF_BGR">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PF_BGR">PF_BGR</a></code></th>
<td class="colLast"><code>1</code></td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PF_BGRA">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PF_BGRA">PF_BGRA</a></code></th>
<td class="colLast"><code>8</code></td>
</tr>
<tr class="altColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PF_BGRX">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PF_BGRX">PF_BGRX</a></code></th>
<td class="colLast"><code>3</code></td> <td class="colLast"><code>3</code></td>
</tr> </tr>
<tr class="rowColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PF_CMYK">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PF_CMYK">PF_CMYK</a></code></th>
<td class="colLast"><code>11</code></td>
</tr>
<tr class="altColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PF_GRAY">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PF_GRAY">PF_GRAY</a></code></th>
<td class="colLast"><code>6</code></td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PF_RGB">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PF_RGB">PF_RGB</a></code></th>
<td class="colLast"><code>0</code></td>
</tr>
<tr class="altColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PF_RGBA">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PF_RGBA">PF_RGBA</a></code></th>
<td class="colLast"><code>7</code></td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PF_RGBX">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PF_RGBX">PF_RGBX</a></code></th>
<td class="colLast"><code>2</code></td>
</tr>
<tr class="altColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PF_XBGR">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PF_XBGR">PF_XBGR</a></code></th>
<td class="colLast"><code>4</code></td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.PF_XRGB">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#PF_XRGB">PF_XRGB</a></code></th>
<td class="colLast"><code>5</code></td>
</tr>
<tr class="altColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.SAMP_411">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#SAMP_411">SAMP_411</a></code></th>
<td class="colLast"><code>5</code></td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.SAMP_420">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#SAMP_420">SAMP_420</a></code></th>
<td class="colLast"><code>2</code></td>
</tr>
<tr class="altColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.SAMP_422">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#SAMP_422">SAMP_422</a></code></th>
<td class="colLast"><code>1</code></td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.SAMP_440">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#SAMP_440">SAMP_440</a></code></th>
<td class="colLast"><code>4</code></td>
</tr>
<tr class="altColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.SAMP_444">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#SAMP_444">SAMP_444</a></code></th>
<td class="colLast"><code>0</code></td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.SAMP_GRAY">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#SAMP_GRAY">SAMP_GRAY</a></code></th>
<td class="colLast"><code>3</code></td>
</tr>
<tr class="altColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJ.SAMP_UNKNOWN">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJ.html#SAMP_UNKNOWN">SAMP_UNKNOWN</a></code></th>
<td class="colLast"><code>-1</code></td>
</tr>
</tbody> </tbody>
</table> </table>
</li> </li>
<li class="blockList"> <li class="blockList">
<table border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values"> <table class="constantsSummary">
<caption><span>org.libjpegturbo.turbojpeg.<a href="org/libjpegturbo/turbojpeg/TJTransform.html" title="class in org.libjpegturbo.turbojpeg">TJTransform</a></span><span class="tabEnd">&nbsp;</span></caption> <caption><span>org.libjpegturbo.turbojpeg.<a href="org/libjpegturbo/turbojpeg/TJTransform.html" title="class in org.libjpegturbo.turbojpeg">TJTransform</a></span><span class="tabEnd">&nbsp;</span></caption>
<tr> <tr>
<th class="colFirst" scope="col">Modifier and Type</th> <th class="colFirst" scope="col">Modifier and Type</th>
<th scope="col">Constant Field</th> <th class="colSecond" scope="col">Constant Field</th>
<th class="colLast" scope="col">Value</th> <th class="colLast" scope="col">Value</th>
</tr> </tr>
<tbody> <tbody>
<tr class="altColor"> <tr class="altColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJTransform.NUMOP"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJTransform.NUMOP">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#NUMOP">NUMOP</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#NUMOP">NUMOP</a></code></th>
<td class="colLast"><code>8</code></td> <td class="colLast"><code>8</code></td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJTransform.OP_HFLIP"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJTransform.OP_HFLIP">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OP_HFLIP">OP_HFLIP</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OP_HFLIP">OP_HFLIP</a></code></th>
<td class="colLast"><code>1</code></td> <td class="colLast"><code>1</code></td>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJTransform.OP_NONE"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJTransform.OP_NONE">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OP_NONE">OP_NONE</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OP_NONE">OP_NONE</a></code></th>
<td class="colLast"><code>0</code></td> <td class="colLast"><code>0</code></td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJTransform.OP_ROT180"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJTransform.OP_ROT180">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OP_ROT180">OP_ROT180</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OP_ROT180">OP_ROT180</a></code></th>
<td class="colLast"><code>6</code></td> <td class="colLast"><code>6</code></td>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJTransform.OP_ROT270"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJTransform.OP_ROT270">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OP_ROT270">OP_ROT270</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OP_ROT270">OP_ROT270</a></code></th>
<td class="colLast"><code>7</code></td> <td class="colLast"><code>7</code></td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJTransform.OP_ROT90"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJTransform.OP_ROT90">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OP_ROT90">OP_ROT90</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OP_ROT90">OP_ROT90</a></code></th>
<td class="colLast"><code>5</code></td> <td class="colLast"><code>5</code></td>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJTransform.OP_TRANSPOSE"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJTransform.OP_TRANSPOSE">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OP_TRANSPOSE">OP_TRANSPOSE</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OP_TRANSPOSE">OP_TRANSPOSE</a></code></th>
<td class="colLast"><code>3</code></td> <td class="colLast"><code>3</code></td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJTransform.OP_TRANSVERSE"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJTransform.OP_TRANSVERSE">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OP_TRANSVERSE">OP_TRANSVERSE</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OP_TRANSVERSE">OP_TRANSVERSE</a></code></th>
<td class="colLast"><code>4</code></td> <td class="colLast"><code>4</code></td>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJTransform.OP_VFLIP"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJTransform.OP_VFLIP">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OP_VFLIP">OP_VFLIP</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OP_VFLIP">OP_VFLIP</a></code></th>
<td class="colLast"><code>2</code></td> <td class="colLast"><code>2</code></td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJTransform.OPT_ARITHMETIC"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJTransform.OPT_ARITHMETIC">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OPT_ARITHMETIC">OPT_ARITHMETIC</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OPT_ARITHMETIC">OPT_ARITHMETIC</a></code></th>
<td class="colLast"><code>128</code></td> <td class="colLast"><code>128</code></td>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJTransform.OPT_COPYNONE"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJTransform.OPT_COPYNONE">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OPT_COPYNONE">OPT_COPYNONE</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OPT_COPYNONE">OPT_COPYNONE</a></code></th>
<td class="colLast"><code>64</code></td> <td class="colLast"><code>64</code></td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJTransform.OPT_CROP"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJTransform.OPT_CROP">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OPT_CROP">OPT_CROP</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OPT_CROP">OPT_CROP</a></code></th>
<td class="colLast"><code>4</code></td> <td class="colLast"><code>4</code></td>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJTransform.OPT_GRAY"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJTransform.OPT_GRAY">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OPT_GRAY">OPT_GRAY</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OPT_GRAY">OPT_GRAY</a></code></th>
<td class="colLast"><code>8</code></td> <td class="colLast"><code>8</code></td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJTransform.OPT_NOOUTPUT"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJTransform.OPT_NOOUTPUT">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OPT_NOOUTPUT">OPT_NOOUTPUT</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OPT_NOOUTPUT">OPT_NOOUTPUT</a></code></th>
<td class="colLast"><code>16</code></td> <td class="colLast"><code>16</code></td>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJTransform.OPT_PERFECT"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJTransform.OPT_OPTIMIZE">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OPT_PERFECT">OPT_PERFECT</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OPT_OPTIMIZE">OPT_OPTIMIZE</a></code></th>
<td class="colLast"><code>1</code></td> <td class="colLast"><code>256</code></td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJTransform.OPT_PROGRESSIVE"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJTransform.OPT_PERFECT">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OPT_PROGRESSIVE">OPT_PROGRESSIVE</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OPT_PERFECT">OPT_PERFECT</a></code></th>
<td class="colLast"><code>32</code></td> <td class="colLast"><code>1</code></td>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">
<td class="colFirst"><a name="org.libjpegturbo.turbojpeg.TJTransform.OPT_TRIM"> <td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJTransform.OPT_PROGRESSIVE">
<!-- --> <!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td> </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OPT_TRIM">OPT_TRIM</a></code></td> <th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OPT_PROGRESSIVE">OPT_PROGRESSIVE</a></code></th>
<td class="colLast"><code>32</code></td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a id="org.libjpegturbo.turbojpeg.TJTransform.OPT_TRIM">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<th class="colSecond" scope="row"><code><a href="org/libjpegturbo/turbojpeg/TJTransform.html#OPT_TRIM">OPT_TRIM</a></code></th>
<td class="colLast"><code>2</code></td> <td class="colLast"><code>2</code></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</li> </li>
</ul> </ul>
</section>
</div> </div>
</main>
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== --> <!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom"> <div class="bottomNav"><a id="navbar.bottom">
<!-- --> <!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow"> </a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- --> <!-- -->
</a> </a>
<ul class="navList" title="Navigation"> <ul class="navList" title="Navigation">
@@ -501,16 +693,8 @@
</ul> </ul>
</div> </div>
<div class="subNav"> <div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?constant-values.html" target="_top">Frames</a></li>
<li><a href="constant-values.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom"> <ul class="navList" id="allclasses_navbar_bottom">
<li><a href="allclasses-noframe.html">All Classes</a></li> <li><a href="allclasses.html">All&nbsp;Classes</a></li>
</ul> </ul>
<div> <div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -523,10 +707,15 @@
} }
//--> //-->
</script> </script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div> </div>
<a name="skip-navbar_bottom"> <a id="skip.navbar.bottom">
<!-- --> <!-- -->
</a></div> </a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= --> <!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body> </body>
</html> </html>

View File

@@ -1,9 +1,21 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!DOCTYPE HTML>
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc -->
<title>Deprecated List</title> <title>Deprecated List</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="jquery/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="jquery/jquery-ui.min.js"></script>
</head> </head>
<body> <body>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -15,14 +27,21 @@
catch(err) { catch(err) {
} }
//--> //-->
</script> var pathtoroot = "./";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript> <noscript>
<div>JavaScript is disabled on your browser.</div> <div>JavaScript is disabled on your browser.</div>
</noscript> </noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= --> <!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top"> <div class="topNav"><a id="navbar.top">
<!-- --> <!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow"> </a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- --> <!-- -->
</a> </a>
<ul class="navList" title="Navigation"> <ul class="navList" title="Navigation">
@@ -35,16 +54,14 @@
</ul> </ul>
</div> </div>
<div class="subNav"> <div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?deprecated-list.html" target="_top">Frames</a></li>
<li><a href="deprecated-list.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top"> <ul class="navList" id="allclasses_navbar_top">
<li><a href="allclasses-noframe.html">All Classes</a></li> <li><a href="allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul> </ul>
<div> <div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -57,19 +74,191 @@
} }
//--> //-->
</script> </script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div> </div>
<a name="skip-navbar_top"> <a id="skip.navbar.top">
<!-- --> <!-- -->
</a></div> </a></div>
<!-- ========= END OF TOP NAVBAR ========= --> <!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<main role="main">
<div class="header"> <div class="header">
<h1 title="Deprecated API" class="title">Deprecated API</h1> <h1 title="Deprecated API" class="title">Deprecated API</h1>
<h2 title="Contents">Contents</h2> <h2 title="Contents">Contents</h2>
<ul>
<li><a href="#field">Fields</a></li>
<li><a href="#method">Methods</a></li>
</ul>
</div> </div>
<!-- ======= START OF BOTTOM NAVBAR ====== --> <div class="contentContainer"><a id="field">
<div class="bottomNav"><a name="navbar_bottom">
<!-- --> <!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow"> </a>
<ul class="blockList">
<li class="blockList">
<table class="deprecatedSummary">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/libjpegturbo/turbojpeg/TJ.html#FLAG_ACCURATEDCT">org.libjpegturbo.turbojpeg.TJ.FLAG_ACCURATEDCT</a></th>
<td class="colLast">
<div class="deprecationComment">Use <a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_FASTDCT"><code>TJ.PARAM_FASTDCT</code></a> instead.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/libjpegturbo/turbojpeg/TJ.html#FLAG_BOTTOMUP">org.libjpegturbo.turbojpeg.TJ.FLAG_BOTTOMUP</a></th>
<td class="colLast">
<div class="deprecationComment">Use <a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_BOTTOMUP"><code>TJ.PARAM_BOTTOMUP</code></a> instead.</div>
</td>
</tr>
<tr class="altColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/libjpegturbo/turbojpeg/TJ.html#FLAG_FASTDCT">org.libjpegturbo.turbojpeg.TJ.FLAG_FASTDCT</a></th>
<td class="colLast">
<div class="deprecationComment">Use <a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_FASTDCT"><code>TJ.PARAM_FASTDCT</code></a> instead.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/libjpegturbo/turbojpeg/TJ.html#FLAG_FASTUPSAMPLE">org.libjpegturbo.turbojpeg.TJ.FLAG_FASTUPSAMPLE</a></th>
<td class="colLast">
<div class="deprecationComment">Use <a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_FASTUPSAMPLE"><code>TJ.PARAM_FASTUPSAMPLE</code></a> instead.</div>
</td>
</tr>
<tr class="altColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/libjpegturbo/turbojpeg/TJ.html#FLAG_LIMITSCANS">org.libjpegturbo.turbojpeg.TJ.FLAG_LIMITSCANS</a></th>
<td class="colLast">
<div class="deprecationComment">Use <a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_SCANLIMIT"><code>TJ.PARAM_SCANLIMIT</code></a> instead.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/libjpegturbo/turbojpeg/TJ.html#FLAG_PROGRESSIVE">org.libjpegturbo.turbojpeg.TJ.FLAG_PROGRESSIVE</a></th>
<td class="colLast">
<div class="deprecationComment">Use <a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_PROGRESSIVE"><code>TJ.PARAM_PROGRESSIVE</code></a> instead.</div>
</td>
</tr>
<tr class="altColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/libjpegturbo/turbojpeg/TJ.html#FLAG_STOPONWARNING">org.libjpegturbo.turbojpeg.TJ.FLAG_STOPONWARNING</a></th>
<td class="colLast">
<div class="deprecationComment">Use <a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_STOPONWARNING"><code>TJ.PARAM_STOPONWARNING</code></a> instead.</div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
<a id="method">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<table class="deprecatedSummary">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/libjpegturbo/turbojpeg/TJCompressor.html#compress(byte%5B%5D,int)">org.libjpegturbo.turbojpeg.TJCompressor.compress&#8203;(byte[], int)</a></th>
<td class="colLast">
<div class="deprecationComment">Use <a href="org/libjpegturbo/turbojpeg/TJCompressor.html#set(int,int)"><code>set()</code></a> and <a href="org/libjpegturbo/turbojpeg/TJCompressor.html#compress(byte%5B%5D)"><code>TJCompressor.compress(byte[])</code></a> instead.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/libjpegturbo/turbojpeg/TJCompressor.html#encodeYUV(org.libjpegturbo.turbojpeg.YUVImage,int)">org.libjpegturbo.turbojpeg.TJCompressor.encodeYUV&#8203;(YUVImage, int)</a></th>
<td class="colLast">
<div class="deprecationComment">Use <a href="org/libjpegturbo/turbojpeg/TJCompressor.html#set(int,int)"><code>set()</code></a> and <a href="org/libjpegturbo/turbojpeg/TJCompressor.html#encodeYUV(org.libjpegturbo.turbojpeg.YUVImage)"><code>TJCompressor.encodeYUV(YUVImage)</code></a>
instead.</div>
</td>
</tr>
<tr class="altColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/libjpegturbo/turbojpeg/TJCompressor.html#setJPEGQuality(int)">org.libjpegturbo.turbojpeg.TJCompressor.setJPEGQuality&#8203;(int)</a></th>
<td class="colLast">
<div class="deprecationComment">Use
<code><a href="org/libjpegturbo/turbojpeg/TJCompressor.html#set(int,int)"><code>set</code></a>(<a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_QUALITY"><code>TJ.PARAM_QUALITY</code></a>, ...)</code> instead.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/libjpegturbo/turbojpeg/TJCompressor.html#setSubsamp(int)">org.libjpegturbo.turbojpeg.TJCompressor.setSubsamp&#8203;(int)</a></th>
<td class="colLast">
<div class="deprecationComment">Use
<code><a href="org/libjpegturbo/turbojpeg/TJCompressor.html#set(int,int)"><code>set</code></a>(<a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_SUBSAMP"><code>TJ.PARAM_SUBSAMP</code></a>, ...)</code> instead.</div>
</td>
</tr>
<tr class="altColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/libjpegturbo/turbojpeg/TJDecompressor.html#decompress(byte%5B%5D,int,int,int,int,int,int,int)">org.libjpegturbo.turbojpeg.TJDecompressor.decompress&#8203;(byte[], int, int, int, int, int, int, int)</a></th>
<td class="colLast">
<div class="deprecationComment">Use <a href="org/libjpegturbo/turbojpeg/TJDecompressor.html#set(int,int)"><code>set()</code></a>,
<a href="org/libjpegturbo/turbojpeg/TJDecompressor.html#setScalingFactor(org.libjpegturbo.turbojpeg.TJScalingFactor)"><code>setScalingFactor()</code></a>, and
<a href="org/libjpegturbo/turbojpeg/TJDecompressor.html#decompress8(byte%5B%5D,int,int,int,int)"><code>TJDecompressor.decompress8(byte[], int, int, int, int)</code></a> instead.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/libjpegturbo/turbojpeg/TJDecompressor.html#decompressToYUV(org.libjpegturbo.turbojpeg.YUVImage,int)">org.libjpegturbo.turbojpeg.TJDecompressor.decompressToYUV&#8203;(YUVImage, int)</a></th>
<td class="colLast">
<div class="deprecationComment">Use <a href="org/libjpegturbo/turbojpeg/TJDecompressor.html#set(int,int)"><code>set()</code></a>, <a href="org/libjpegturbo/turbojpeg/TJDecompressor.html#setScalingFactor(org.libjpegturbo.turbojpeg.TJScalingFactor)"><code>setScalingFactor()</code></a>, and <a href="org/libjpegturbo/turbojpeg/TJDecompressor.html#decompressToYUV(org.libjpegturbo.turbojpeg.YUVImage)"><code>TJDecompressor.decompressToYUV(YUVImage)</code></a> instead.</div>
</td>
</tr>
<tr class="altColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/libjpegturbo/turbojpeg/TJDecompressor.html#getColorspace()">org.libjpegturbo.turbojpeg.TJDecompressor.getColorspace()</a></th>
<td class="colLast">
<div class="deprecationComment">Use <code><a href="org/libjpegturbo/turbojpeg/TJDecompressor.html#get(int)"><code>get</code></a>(<a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_COLORSPACE"><code>TJ.PARAM_COLORSPACE</code></a>)</code>
instead.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/libjpegturbo/turbojpeg/TJDecompressor.html#getScaledHeight(int,int)">org.libjpegturbo.turbojpeg.TJDecompressor.getScaledHeight&#8203;(int, int)</a></th>
<td class="colLast">
<div class="deprecationComment">Use <a href="org/libjpegturbo/turbojpeg/TJDecompressor.html#setScalingFactor(org.libjpegturbo.turbojpeg.TJScalingFactor)"><code>setScalingFactor()</code></a> and
<a href="org/libjpegturbo/turbojpeg/TJScalingFactor.html#getScaled(int)"><code>TJScalingFactor.getScaled()</code></a> instead.</div>
</td>
</tr>
<tr class="altColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/libjpegturbo/turbojpeg/TJDecompressor.html#getScaledWidth(int,int)">org.libjpegturbo.turbojpeg.TJDecompressor.getScaledWidth&#8203;(int, int)</a></th>
<td class="colLast">
<div class="deprecationComment">Use <a href="org/libjpegturbo/turbojpeg/TJDecompressor.html#setScalingFactor(org.libjpegturbo.turbojpeg.TJScalingFactor)"><code>setScalingFactor()</code></a> and
<a href="org/libjpegturbo/turbojpeg/TJScalingFactor.html#getScaled(int)"><code>TJScalingFactor.getScaled()</code></a> instead.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/libjpegturbo/turbojpeg/TJDecompressor.html#getSubsamp()">org.libjpegturbo.turbojpeg.TJDecompressor.getSubsamp()</a></th>
<td class="colLast">
<div class="deprecationComment">Use <code><a href="org/libjpegturbo/turbojpeg/TJDecompressor.html#get(int)"><code>get</code></a>(<a href="org/libjpegturbo/turbojpeg/TJ.html#PARAM_SUBSAMP"><code>TJ.PARAM_SUBSAMP</code></a>)</code>
instead.</div>
</td>
</tr>
<tr class="altColor">
<th class="colDeprecatedItemName" scope="row"><a href="org/libjpegturbo/turbojpeg/TJTransformer.html#transform(byte%5B%5D%5B%5D,org.libjpegturbo.turbojpeg.TJTransform%5B%5D,int)">org.libjpegturbo.turbojpeg.TJTransformer.transform&#8203;(byte[][], TJTransform[], int)</a></th>
<td class="colLast">
<div class="deprecationComment">Use <a href="org/libjpegturbo/turbojpeg/TJDecompressor.html#set(int,int)"><code>TJDecompressor.set()</code></a> and
<a href="org/libjpegturbo/turbojpeg/TJTransformer.html#transform(byte%5B%5D%5B%5D,org.libjpegturbo.turbojpeg.TJTransform%5B%5D)"><code>TJTransformer.transform(byte[][], TJTransform[])</code></a> instead.</div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
</div>
</main>
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- --> <!-- -->
</a> </a>
<ul class="navList" title="Navigation"> <ul class="navList" title="Navigation">
@@ -82,16 +271,8 @@
</ul> </ul>
</div> </div>
<div class="subNav"> <div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?deprecated-list.html" target="_top">Frames</a></li>
<li><a href="deprecated-list.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom"> <ul class="navList" id="allclasses_navbar_bottom">
<li><a href="allclasses-noframe.html">All Classes</a></li> <li><a href="allclasses.html">All&nbsp;Classes</a></li>
</ul> </ul>
<div> <div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -104,10 +285,15 @@
} }
//--> //-->
</script> </script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div> </div>
<a name="skip-navbar_bottom"> <a id="skip.navbar.bottom">
<!-- --> <!-- -->
</a></div> </a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= --> <!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body> </body>
</html> </html>

View File

@@ -1,9 +1,21 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!DOCTYPE HTML>
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc -->
<title>API Help</title> <title>API Help</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="jquery/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="jquery/jquery-ui.min.js"></script>
</head> </head>
<body> <body>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -15,14 +27,21 @@
catch(err) { catch(err) {
} }
//--> //-->
</script> var pathtoroot = "./";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript> <noscript>
<div>JavaScript is disabled on your browser.</div> <div>JavaScript is disabled on your browser.</div>
</noscript> </noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= --> <!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top"> <div class="topNav"><a id="navbar.top">
<!-- --> <!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow"> </a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- --> <!-- -->
</a> </a>
<ul class="navList" title="Navigation"> <ul class="navList" title="Navigation">
@@ -35,16 +54,14 @@
</ul> </ul>
</div> </div>
<div class="subNav"> <div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?help-doc.html" target="_top">Frames</a></li>
<li><a href="help-doc.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top"> <ul class="navList" id="allclasses_navbar_top">
<li><a href="allclasses-noframe.html">All Classes</a></li> <li><a href="allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul> </ul>
<div> <div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -57,11 +74,23 @@
} }
//--> //-->
</script> </script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div> </div>
<a name="skip-navbar_top"> <a id="skip.navbar.top">
<!-- --> <!-- -->
</a></div> </a></div>
<!-- ========= END OF TOP NAVBAR ========= --> <!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<main role="main">
<div class="header"> <div class="header">
<h1 class="title">How This API Document Is Organized</h1> <h1 class="title">How This API Document Is Organized</h1>
<div class="subTitle">This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.</div> <div class="subTitle">This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.</div>
@@ -69,104 +98,132 @@
<div class="contentContainer"> <div class="contentContainer">
<ul class="blockList"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<section>
<h2>Package</h2> <h2>Package</h2>
<p>Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:</p> <p>Each package has a page that contains a list of its classes and interfaces, with a summary for each. These pages may contain six categories:</p>
<ul> <ul>
<li>Interfaces (italic)</li> <li>Interfaces</li>
<li>Classes</li> <li>Classes</li>
<li>Enums</li> <li>Enums</li>
<li>Exceptions</li> <li>Exceptions</li>
<li>Errors</li> <li>Errors</li>
<li>Annotation Types</li> <li>Annotation Types</li>
</ul> </ul>
</section>
</li> </li>
<li class="blockList"> <li class="blockList">
<h2>Class/Interface</h2> <section>
<h2>Class or Interface</h2>
<p>Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:</p> <p>Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:</p>
<ul> <ul>
<li>Class inheritance diagram</li> <li>Class Inheritance Diagram</li>
<li>Direct Subclasses</li> <li>Direct Subclasses</li>
<li>All Known Subinterfaces</li> <li>All Known Subinterfaces</li>
<li>All Known Implementing Classes</li> <li>All Known Implementing Classes</li>
<li>Class/interface declaration</li> <li>Class or Interface Declaration</li>
<li>Class/interface description</li> <li>Class or Interface Description</li>
</ul> </ul>
<br>
<ul> <ul>
<li>Nested Class Summary</li> <li>Nested Class Summary</li>
<li>Field Summary</li> <li>Field Summary</li>
<li>Property Summary</li>
<li>Constructor Summary</li> <li>Constructor Summary</li>
<li>Method Summary</li> <li>Method Summary</li>
</ul> </ul>
<br>
<ul> <ul>
<li>Field Detail</li> <li>Field Detail</li>
<li>Property Detail</li>
<li>Constructor Detail</li> <li>Constructor Detail</li>
<li>Method Detail</li> <li>Method Detail</li>
</ul> </ul>
<p>Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.</p> <p>Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.</p>
</section>
</li> </li>
<li class="blockList"> <li class="blockList">
<section>
<h2>Annotation Type</h2> <h2>Annotation Type</h2>
<p>Each annotation type has its own separate page with the following sections:</p> <p>Each annotation type has its own separate page with the following sections:</p>
<ul> <ul>
<li>Annotation Type declaration</li> <li>Annotation Type Declaration</li>
<li>Annotation Type description</li> <li>Annotation Type Description</li>
<li>Required Element Summary</li> <li>Required Element Summary</li>
<li>Optional Element Summary</li> <li>Optional Element Summary</li>
<li>Element Detail</li> <li>Element Detail</li>
</ul> </ul>
</section>
</li> </li>
<li class="blockList"> <li class="blockList">
<section>
<h2>Enum</h2> <h2>Enum</h2>
<p>Each enum has its own separate page with the following sections:</p> <p>Each enum has its own separate page with the following sections:</p>
<ul> <ul>
<li>Enum declaration</li> <li>Enum Declaration</li>
<li>Enum description</li> <li>Enum Description</li>
<li>Enum Constant Summary</li> <li>Enum Constant Summary</li>
<li>Enum Constant Detail</li> <li>Enum Constant Detail</li>
</ul> </ul>
</section>
</li> </li>
<li class="blockList"> <li class="blockList">
<section>
<h2>Tree (Class Hierarchy)</h2> <h2>Tree (Class Hierarchy)</h2>
<p>There is a <a href="overview-tree.html">Class Hierarchy</a> page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with <code>java.lang.Object</code>. The interfaces do not inherit from <code>java.lang.Object</code>.</p> <p>There is a <a href="overview-tree.html">Class Hierarchy</a> page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. Classes are organized by inheritance structure starting with <code>java.lang.Object</code>. Interfaces do not inherit from <code>java.lang.Object</code>.</p>
<ul> <ul>
<li>When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.</li> <li>When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.</li>
<li>When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.</li> <li>When viewing a particular package, class or interface page, clicking on "Tree" displays the hierarchy for only that package.</li>
</ul> </ul>
</section>
</li> </li>
<li class="blockList"> <li class="blockList">
<section>
<h2>Deprecated API</h2> <h2>Deprecated API</h2>
<p>The <a href="deprecated-list.html">Deprecated API</a> page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.</p> <p>The <a href="deprecated-list.html">Deprecated API</a> page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.</p>
</section>
</li> </li>
<li class="blockList"> <li class="blockList">
<section>
<h2>Index</h2> <h2>Index</h2>
<p>The <a href="index-all.html">Index</a> contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.</p> <p>The <a href="index-all.html">Index</a> contains an alphabetic index of all classes, interfaces, constructors, methods, and fields, as well as lists of all packages and all classes.</p>
</section>
</li> </li>
<li class="blockList"> <li class="blockList">
<h2>Prev/Next</h2> <section>
<p>These links take you to the next or previous class, interface, package, or related page.</p> <h2>All&nbsp;Classes</h2>
</li> <p>The <a href="allclasses.html">All Classes</a> link shows all classes and interfaces except non-static nested types.</p>
<li class="blockList"> </section>
<h2>Frames/No Frames</h2>
<p>These links show and hide the HTML frames. All pages are available with or without frames.</p>
</li>
<li class="blockList">
<h2>All Classes</h2>
<p>The <a href="allclasses-noframe.html">All Classes</a> link shows all classes and interfaces except non-static nested types.</p>
</li> </li>
<li class="blockList"> <li class="blockList">
<section>
<h2>Serialized Form</h2> <h2>Serialized Form</h2>
<p>Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.</p> <p>Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.</p>
</section>
</li> </li>
<li class="blockList"> <li class="blockList">
<section>
<h2>Constant Field Values</h2> <h2>Constant Field Values</h2>
<p>The <a href="constant-values.html">Constant Field Values</a> page lists the static final fields and their values.</p> <p>The <a href="constant-values.html">Constant Field Values</a> page lists the static final fields and their values.</p>
</section>
</li>
<li class="blockList">
<section>
<h2>Search</h2>
<p>You can search for definitions of modules, packages, types, fields, methods and other terms defined in the API, using some or all of the name. "Camel-case" abbreviations are supported: for example, "InpStr" will find "InputStream" and "InputStreamReader".</p>
</section>
</li> </li>
</ul> </ul>
<em>This help file applies to API documentation generated using the standard doclet.</em></div> <hr>
<span class="emphasizedPhrase">This help file applies to API documentation generated by the standard doclet.</span></div>
</main>
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== --> <!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom"> <div class="bottomNav"><a id="navbar.bottom">
<!-- --> <!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow"> </a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- --> <!-- -->
</a> </a>
<ul class="navList" title="Navigation"> <ul class="navList" title="Navigation">
@@ -179,16 +236,8 @@
</ul> </ul>
</div> </div>
<div class="subNav"> <div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?help-doc.html" target="_top">Frames</a></li>
<li><a href="help-doc.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom"> <ul class="navList" id="allclasses_navbar_bottom">
<li><a href="allclasses-noframe.html">All Classes</a></li> <li><a href="allclasses.html">All&nbsp;Classes</a></li>
</ul> </ul>
<div> <div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -201,10 +250,15 @@
} }
//--> //-->
</script> </script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div> </div>
<a name="skip-navbar_bottom"> <a id="skip.navbar.bottom">
<!-- --> <!-- -->
</a></div> </a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= --> <!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body> </body>
</html> </html>

File diff suppressed because it is too large Load Diff

View File

@@ -1,71 +1,23 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <!DOCTYPE HTML>
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc -->
<title>Generated Documentation (Untitled)</title> <title>Generated Documentation (Untitled)</title>
<script type="text/javascript"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
tmpTargetPage = "" + window.location.search; <script type="text/javascript">window.location.replace('org/libjpegturbo/turbojpeg/package-summary.html')</script>
if (tmpTargetPage != "" && tmpTargetPage != "undefined")
tmpTargetPage = tmpTargetPage.substring(1);
if (tmpTargetPage.indexOf(":") != -1 || (tmpTargetPage != "" && !validURL(tmpTargetPage)))
tmpTargetPage = "undefined";
targetPage = tmpTargetPage;
function validURL(url) {
try {
url = decodeURIComponent(url);
}
catch (error) {
return false;
}
var pos = url.indexOf(".html");
if (pos == -1 || pos != url.length - 5)
return false;
var allowNumber = false;
var allowSep = false;
var seenDot = false;
for (var i = 0; i < url.length - 5; i++) {
var ch = url.charAt(i);
if ('a' <= ch && ch <= 'z' ||
'A' <= ch && ch <= 'Z' ||
ch == '$' ||
ch == '_' ||
ch.charCodeAt(0) > 127) {
allowNumber = true;
allowSep = true;
} else if ('0' <= ch && ch <= '9'
|| ch == '-') {
if (!allowNumber)
return false;
} else if (ch == '/' || ch == '.') {
if (!allowSep)
return false;
allowNumber = false;
allowSep = false;
if (ch == '.')
seenDot = true;
if (ch == '/' && seenDot)
return false;
} else {
return false;
}
}
return true;
}
function loadFrames() {
if (targetPage != "" && targetPage != "undefined")
top.classFrame.location = top.targetPage;
}
</script>
</head>
<frameset cols="20%,80%" title="Documentation frame" onload="top.loadFrames()">
<frame src="allclasses-frame.html" name="packageFrame" title="All classes and interfaces (except non-static nested types)">
<frame src="org/libjpegturbo/turbojpeg/package-summary.html" name="classFrame" title="Package, class and interface descriptions" scrolling="yes">
<noframes>
<noscript> <noscript>
<div>JavaScript is disabled on your browser.</div> <meta http-equiv="Refresh" content="0;org/libjpegturbo/turbojpeg/package-summary.html">
</noscript> </noscript>
<h2>Frame Alert</h2> <link rel="canonical" href="org/libjpegturbo/turbojpeg/package-summary.html">
<p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="org/libjpegturbo/turbojpeg/package-summary.html">Non-frame version</a>.</p> <link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
</noframes> </head>
</frameset> <body>
<main role="main">
<noscript>
<p>JavaScript is disabled on your browser.</p>
</noscript>
<p><a href="org/libjpegturbo/turbojpeg/package-summary.html">org/libjpegturbo/turbojpeg/package-summary.html</a></p>
</main>
</body>
</html> </html>

35
java/doc/jquery-ui.overrides.css vendored Normal file
View File

@@ -0,0 +1,35 @@
/*
* Copyright (c) 2020, 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
.ui-state-active,
.ui-widget-content .ui-state-active,
.ui-widget-header .ui-state-active,
a.ui-button:active,
.ui-button:active,
.ui-button.ui-state-active:hover {
/* Overrides the color of selection used in jQuery UI */
background: #F8981D;
border: 1px solid #F8981D;
}

10872
java/doc/jquery/external/jquery/jquery.js vendored Normal file

File diff suppressed because it is too large Load Diff

2
java/doc/jquery/jquery-3.6.0.min.js vendored Normal file

File diff suppressed because one or more lines are too long

6
java/doc/jquery/jquery-ui.min.css vendored Normal file
View File

@@ -0,0 +1,6 @@
/*! jQuery UI - v1.13.1 - 2022-05-12
* http://jqueryui.com
* Includes: core.css, autocomplete.css, menu.css
* Copyright jQuery Foundation and other contributors; Licensed MIT */
.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;-ms-filter:"alpha(opacity=0)"}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}

6
java/doc/jquery/jquery-ui.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,56 @@
/*!
JSZipUtils - A collection of cross-browser utilities to go along with JSZip.
<http://stuk.github.io/jszip-utils>
(c) 2014 Stuart Knightley, David Duponchel
Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip-utils/master/LICENSE.markdown.
*/
;(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
var global=typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {};/* jshint evil: true, newcap: false */
/* global IEBinaryToArray_ByteStr, IEBinaryToArray_ByteStr_Last */
"use strict";
// Adapted from http://stackoverflow.com/questions/1095102/how-do-i-load-binary-image-data-using-javascript-and-xmlhttprequest
var IEBinaryToArray_ByteStr_Script =
"<!-- IEBinaryToArray_ByteStr -->\r\n"+
"<script type='text/vbscript'>\r\n"+
"Function IEBinaryToArray_ByteStr(Binary)\r\n"+
" IEBinaryToArray_ByteStr = CStr(Binary)\r\n"+
"End Function\r\n"+
"Function IEBinaryToArray_ByteStr_Last(Binary)\r\n"+
" Dim lastIndex\r\n"+
" lastIndex = LenB(Binary)\r\n"+
" if lastIndex mod 2 Then\r\n"+
" IEBinaryToArray_ByteStr_Last = Chr( AscB( MidB( Binary, lastIndex, 1 ) ) )\r\n"+
" Else\r\n"+
" IEBinaryToArray_ByteStr_Last = "+'""'+"\r\n"+
" End If\r\n"+
"End Function\r\n"+
"</script>\r\n";
// inject VBScript
document.write(IEBinaryToArray_ByteStr_Script);
global.JSZipUtils._getBinaryFromXHR = function (xhr) {
var binary = xhr.responseBody;
var byteMapping = {};
for ( var i = 0; i < 256; i++ ) {
for ( var j = 0; j < 256; j++ ) {
byteMapping[ String.fromCharCode( i + (j << 8) ) ] =
String.fromCharCode(i) + String.fromCharCode(j);
}
}
var rawBytes = IEBinaryToArray_ByteStr(binary);
var lastChr = IEBinaryToArray_ByteStr_Last(binary);
return rawBytes.replace(/[\s\S]/g, function( match ) {
return byteMapping[match];
}) + lastChr;
};
// enforcing Stuk's coding style
// vim: set shiftwidth=4 softtabstop=4:
},{}]},{},[1])
;

View File

@@ -0,0 +1,10 @@
/*!
JSZipUtils - A collection of cross-browser utilities to go along with JSZip.
<http://stuk.github.io/jszip-utils>
(c) 2014 Stuart Knightley, David Duponchel
Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip-utils/master/LICENSE.markdown.
*/
!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(){var a="undefined"!=typeof self?self:"undefined"!=typeof window?window:{},b="<!-- IEBinaryToArray_ByteStr -->\r\n<script type='text/vbscript'>\r\nFunction IEBinaryToArray_ByteStr(Binary)\r\n IEBinaryToArray_ByteStr = CStr(Binary)\r\nEnd Function\r\nFunction IEBinaryToArray_ByteStr_Last(Binary)\r\n Dim lastIndex\r\n lastIndex = LenB(Binary)\r\n if lastIndex mod 2 Then\r\n IEBinaryToArray_ByteStr_Last = Chr( AscB( MidB( Binary, lastIndex, 1 ) ) )\r\n Else\r\n IEBinaryToArray_ByteStr_Last = \"\"\r\n End If\r\nEnd Function\r\n</script>\r\n";document.write(b),a.JSZipUtils._getBinaryFromXHR=function(a){for(var b=a.responseBody,c={},d=0;256>d;d++)for(var e=0;256>e;e++)c[String.fromCharCode(d+(e<<8))]=String.fromCharCode(d)+String.fromCharCode(e);var f=IEBinaryToArray_ByteStr(b),g=IEBinaryToArray_ByteStr_Last(b);return f.replace(/[\s\S]/g,function(a){return c[a]})+g}},{}]},{},[1]);

View File

@@ -0,0 +1,118 @@
/*!
JSZipUtils - A collection of cross-browser utilities to go along with JSZip.
<http://stuk.github.io/jszip-utils>
(c) 2014 Stuart Knightley, David Duponchel
Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip-utils/master/LICENSE.markdown.
*/
!function(e){"object"==typeof exports?module.exports=e():"function"==typeof define&&define.amd?define(e):"undefined"!=typeof window?window.JSZipUtils=e():"undefined"!=typeof global?global.JSZipUtils=e():"undefined"!=typeof self&&(self.JSZipUtils=e())}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
'use strict';
var JSZipUtils = {};
// just use the responseText with xhr1, response with xhr2.
// The transformation doesn't throw away high-order byte (with responseText)
// because JSZip handles that case. If not used with JSZip, you may need to
// do it, see https://developer.mozilla.org/En/Using_XMLHttpRequest#Handling_binary_data
JSZipUtils._getBinaryFromXHR = function (xhr) {
// for xhr.responseText, the 0xFF mask is applied by JSZip
return xhr.response || xhr.responseText;
};
// taken from jQuery
function createStandardXHR() {
try {
return new window.XMLHttpRequest();
} catch( e ) {}
}
function createActiveXHR() {
try {
return new window.ActiveXObject("Microsoft.XMLHTTP");
} catch( e ) {}
}
// Create the request object
var createXHR = window.ActiveXObject ?
/* Microsoft failed to properly
* implement the XMLHttpRequest in IE7 (can't request local files),
* so we use the ActiveXObject when it is available
* Additionally XMLHttpRequest can be disabled in IE7/IE8 so
* we need a fallback.
*/
function() {
return createStandardXHR() || createActiveXHR();
} :
// For all other browsers, use the standard XMLHttpRequest object
createStandardXHR;
JSZipUtils.getBinaryContent = function(path, callback) {
/*
* Here is the tricky part : getting the data.
* In firefox/chrome/opera/... setting the mimeType to 'text/plain; charset=x-user-defined'
* is enough, the result is in the standard xhr.responseText.
* cf https://developer.mozilla.org/En/XMLHttpRequest/Using_XMLHttpRequest#Receiving_binary_data_in_older_browsers
* In IE <= 9, we must use (the IE only) attribute responseBody
* (for binary data, its content is different from responseText).
* In IE 10, the 'charset=x-user-defined' trick doesn't work, only the
* responseType will work :
* http://msdn.microsoft.com/en-us/library/ie/hh673569%28v=vs.85%29.aspx#Binary_Object_upload_and_download
*
* I'd like to use jQuery to avoid this XHR madness, but it doesn't support
* the responseType attribute : http://bugs.jquery.com/ticket/11461
*/
try {
var xhr = createXHR();
xhr.open('GET', path, true);
// recent browsers
if ("responseType" in xhr) {
xhr.responseType = "arraybuffer";
}
// older browser
if(xhr.overrideMimeType) {
xhr.overrideMimeType("text/plain; charset=x-user-defined");
}
xhr.onreadystatechange = function(evt) {
var file, err;
// use `xhr` and not `this`... thanks IE
if (xhr.readyState === 4) {
if (xhr.status === 200 || xhr.status === 0) {
file = null;
err = null;
try {
file = JSZipUtils._getBinaryFromXHR(xhr);
} catch(e) {
err = new Error(e);
}
callback(err, file);
} else {
callback(new Error("Ajax error for " + path + " : " + this.status + " " + this.statusText), null);
}
}
};
xhr.send();
} catch (e) {
callback(new Error(e), null);
}
};
// export
module.exports = JSZipUtils;
// enforcing Stuk's coding style
// vim: set shiftwidth=4 softtabstop=4:
},{}]},{},[1])
(1)
});
;

View File

@@ -0,0 +1,10 @@
/*!
JSZipUtils - A collection of cross-browser utilities to go along with JSZip.
<http://stuk.github.io/jszip-utils>
(c) 2014 Stuart Knightley, David Duponchel
Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip-utils/master/LICENSE.markdown.
*/
!function(a){"object"==typeof exports?module.exports=a():"function"==typeof define&&define.amd?define(a):"undefined"!=typeof window?window.JSZipUtils=a():"undefined"!=typeof global?global.JSZipUtils=a():"undefined"!=typeof self&&(self.JSZipUtils=a())}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b){"use strict";function c(){try{return new window.XMLHttpRequest}catch(a){}}function d(){try{return new window.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}}var e={};e._getBinaryFromXHR=function(a){return a.response||a.responseText};var f=window.ActiveXObject?function(){return c()||d()}:c;e.getBinaryContent=function(a,b){try{var c=f();c.open("GET",a,!0),"responseType"in c&&(c.responseType="arraybuffer"),c.overrideMimeType&&c.overrideMimeType("text/plain; charset=x-user-defined"),c.onreadystatechange=function(){var d,f;if(4===c.readyState)if(200===c.status||0===c.status){d=null,f=null;try{d=e._getBinaryFromXHR(c)}catch(g){f=new Error(g)}b(f,d)}else b(new Error("Ajax error for "+a+" : "+this.status+" "+this.statusText),null)},c.send()}catch(d){b(new Error(d),null)}},b.exports=e},{}]},{},[1])(1)});

11370
java/doc/jquery/jszip/dist/jszip.js vendored Normal file

File diff suppressed because it is too large Load Diff

13
java/doc/jquery/jszip/dist/jszip.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,9 +1,21 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!DOCTYPE HTML>
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc -->
<title>TJCustomFilter</title> <title>TJCustomFilter</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
<script type="text/javascript" src="../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../jquery/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="../../../jquery/jquery-ui.min.js"></script>
</head> </head>
<body> <body>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -15,18 +27,31 @@
catch(err) { catch(err) {
} }
//--> //-->
</script> var data = {"i0":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript> <noscript>
<div>JavaScript is disabled on your browser.</div> <div>JavaScript is disabled on your browser.</div>
</noscript> </noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= --> <!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top"> <div class="topNav"><a id="navbar.top">
<!-- --> <!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow"> </a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- --> <!-- -->
</a> </a>
<ul class="navList" title="Navigation"> <ul class="navList" title="Navigation">
<li><a href="../../../org/libjpegturbo/turbojpeg/package-summary.html">Package</a></li> <li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li> <li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li> <li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li> <li><a href="../../../deprecated-list.html">Deprecated</a></li>
@@ -35,16 +60,14 @@
</ul> </ul>
</div> </div>
<div class="subNav"> <div class="subNav">
<ul class="navList">
<li><a href="../../../org/libjpegturbo/turbojpeg/TJCompressor.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?org/libjpegturbo/turbojpeg/TJCustomFilter.html" target="_top">Frames</a></li>
<li><a href="TJCustomFilter.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top"> <ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All Classes</a></li> <li><a href="../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul> </ul>
<div> <div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -57,6 +80,9 @@
} }
//--> //-->
</script> </script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div> </div>
<div> <div>
<ul class="subNavList"> <ul class="subNavList">
@@ -64,22 +90,31 @@
<li>Nested&nbsp;|&nbsp;</li> <li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li> <li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li> <li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li> <li><a href="#method.summary">Method</a></li>
</ul> </ul>
<ul class="subNavList"> <ul class="subNavList">
<li>Detail:&nbsp;</li> <li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li> <li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li> <li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li> <li><a href="#method.detail">Method</a></li>
</ul> </ul>
</div> </div>
<a name="skip-navbar_top"> <a id="skip.navbar.top">
<!-- --> <!-- -->
</a></div> </a></div>
<!-- ========= END OF TOP NAVBAR ========= --> <!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== --> <!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header"> <div class="header">
<div class="subTitle">org.libjpegturbo.turbojpeg</div> <div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.libjpegturbo.turbojpeg</a></div>
<h2 title="Interface TJCustomFilter" class="title">Interface TJCustomFilter</h2> <h2 title="Interface TJCustomFilter" class="title">Interface TJCustomFilter</h2>
</div> </div>
<div class="contentContainer"> <div class="contentContainer">
@@ -87,8 +122,7 @@
<ul class="blockList"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<hr> <hr>
<br> <pre>public interface <span class="typeNameLabel">TJCustomFilter</span></pre>
<pre>public interface <span class="strong">TJCustomFilter</span></pre>
<div class="block">Custom filter callback interface</div> <div class="block">Custom filter callback interface</div>
</li> </li>
</ul> </ul>
@@ -97,25 +131,28 @@
<ul class="blockList"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<!-- ========== METHOD SUMMARY =========== --> <!-- ========== METHOD SUMMARY =========== -->
<section>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"><a name="method_summary"> <li class="blockList"><a id="method.summary">
<!-- --> <!-- -->
</a> </a>
<h3>Method Summary</h3> <h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation"> <table class="memberSummary">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption> <caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr> <tr>
<th class="colFirst" scope="col">Modifier and Type</th> <th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th> <th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr> </tr>
<tr class="altColor"> <tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td> <td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/TJCustomFilter.html#customFilter(java.nio.ShortBuffer,%20java.awt.Rectangle,%20java.awt.Rectangle,%20int,%20int,%20org.libjpegturbo.turbojpeg.TJTransform)">customFilter</a></strong>(java.nio.ShortBuffer&nbsp;coeffBuffer, <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#customFilter(java.nio.ShortBuffer,java.awt.Rectangle,java.awt.Rectangle,int,int,org.libjpegturbo.turbojpeg.TJTransform)">customFilter</a></span>&#8203;(java.nio.ShortBuffer&nbsp;coeffBuffer,
java.awt.Rectangle&nbsp;bufferRegion, java.awt.Rectangle&nbsp;bufferRegion,
java.awt.Rectangle&nbsp;planeRegion, java.awt.Rectangle&nbsp;planeRegion,
int&nbsp;componentID, int&nbsp;componentID,
int&nbsp;transformID, int&nbsp;transformID,
<a href="../../../org/libjpegturbo/turbojpeg/TJTransform.html" title="class in org.libjpegturbo.turbojpeg">TJTransform</a>&nbsp;transform)</code> <a href="TJTransform.html" title="class in org.libjpegturbo.turbojpeg">TJTransform</a>&nbsp;transform)</code></th>
<td class="colLast">
<div class="block">A callback function that can be used to modify the DCT coefficients after <div class="block">A callback function that can be used to modify the DCT coefficients after
they are losslessly transformed but before they are transcoded to a new they are losslessly transformed but before they are transcoded to a new
JPEG image.</div> JPEG image.</div>
@@ -124,6 +161,7 @@
</table> </table>
</li> </li>
</ul> </ul>
</section>
</li> </li>
</ul> </ul>
</div> </div>
@@ -131,62 +169,78 @@
<ul class="blockList"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<!-- ============ METHOD DETAIL ========== --> <!-- ============ METHOD DETAIL ========== -->
<section>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"><a name="method_detail"> <li class="blockList"><a id="method.detail">
<!-- --> <!-- -->
</a> </a>
<h3>Method Detail</h3> <h3>Method Detail</h3>
<a name="customFilter(java.nio.ShortBuffer, java.awt.Rectangle, java.awt.Rectangle, int, int, org.libjpegturbo.turbojpeg.TJTransform)"> <a id="customFilter(java.nio.ShortBuffer,java.awt.Rectangle,java.awt.Rectangle,int,int,org.libjpegturbo.turbojpeg.TJTransform)">
<!-- --> <!-- -->
</a> </a>
<ul class="blockListLast"> <ul class="blockListLast">
<li class="blockList"> <li class="blockList">
<h4>customFilter</h4> <h4>customFilter</h4>
<pre>void&nbsp;customFilter(java.nio.ShortBuffer&nbsp;coeffBuffer, <pre class="methodSignature">void&nbsp;customFilter&#8203;(java.nio.ShortBuffer&nbsp;coeffBuffer,
java.awt.Rectangle&nbsp;bufferRegion, java.awt.Rectangle&nbsp;bufferRegion,
java.awt.Rectangle&nbsp;planeRegion, java.awt.Rectangle&nbsp;planeRegion,
int&nbsp;componentID, int&nbsp;componentID,
int&nbsp;transformID, int&nbsp;transformID,
<a href="../../../org/libjpegturbo/turbojpeg/TJTransform.html" title="class in org.libjpegturbo.turbojpeg">TJTransform</a>&nbsp;transform) <a href="TJTransform.html" title="class in org.libjpegturbo.turbojpeg">TJTransform</a>&nbsp;transform)
throws <a href="../../../org/libjpegturbo/turbojpeg/TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></pre> throws <a href="TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></pre>
<div class="block">A callback function that can be used to modify the DCT coefficients after <div class="block">A callback function that can be used to modify the DCT coefficients after
they are losslessly transformed but before they are transcoded to a new they are losslessly transformed but before they are transcoded to a new
JPEG image. This allows for custom filters or other transformations to be JPEG image. This allows for custom filters or other transformations to be
applied in the frequency domain.</div> applied in the frequency domain.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>coeffBuffer</code> - a buffer containing transformed DCT coefficients. <dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>coeffBuffer</code> - a buffer containing transformed DCT coefficients.
(NOTE: this buffer is not guaranteed to be valid once the callback (NOTE: this buffer is not guaranteed to be valid once the callback
returns, so applications wishing to hand off the DCT coefficients to returns, so applications wishing to hand off the DCT coefficients to
another function or library should make a copy of them within the body of another function or library should make a copy of them within the body of
the callback.)</dd><dd><code>bufferRegion</code> - rectangle containing the width and height of the callback.)</dd>
<dd><code>bufferRegion</code> - rectangle containing the width and height of
<code>coeffBuffer</code> as well as its offset relative to the component <code>coeffBuffer</code> as well as its offset relative to the component
plane. TurboJPEG implementations may choose to split each component plane plane. TurboJPEG implementations may choose to split each component plane
into multiple DCT coefficient buffers and call the callback function once into multiple DCT coefficient buffers and call the callback function once
for each buffer.</dd><dd><code>planeRegion</code> - rectangle containing the width and height of the for each buffer.</dd>
component plane to which <code>coeffBuffer</code> belongs</dd><dd><code>componentID</code> - ID number of the component plane to which <dd><code>planeRegion</code> - rectangle containing the width and height of the
component plane to which <code>coeffBuffer</code> belongs</dd>
<dd><code>componentID</code> - ID number of the component plane to which
<code>coeffBuffer</code> belongs. (Y, Cb, and Cr have, respectively, ID's <code>coeffBuffer</code> belongs. (Y, Cb, and Cr have, respectively, ID's
of 0, 1, and 2 in typical JPEG images.)</dd><dd><code>transformID</code> - ID number of the transformed image to which of 0, 1, and 2 in typical JPEG images.)</dd>
<dd><code>transformID</code> - ID number of the transformed image to which
<code>coeffBuffer</code> belongs. This is the same as the index of the <code>coeffBuffer</code> belongs. This is the same as the index of the
transform in the <code>transforms</code> array that was passed to <a href="../../../org/libjpegturbo/turbojpeg/TJTransformer.html#transform(byte[][],%20org.libjpegturbo.turbojpeg.TJTransform[],%20int)"><code>TJTransformer.transform()</code></a>.</dd><dd><code>transform</code> - a <a href="../../../org/libjpegturbo/turbojpeg/TJTransform.html" title="class in org.libjpegturbo.turbojpeg"><code>TJTransform</code></a> instance that specifies the transform in the <code>transforms</code> array that was passed to
<a href="TJTransformer.html#transform(byte%5B%5D%5B%5D,org.libjpegturbo.turbojpeg.TJTransform%5B%5D)"><code>TJTransformer.transform()</code></a>.</dd>
<dd><code>transform</code> - a <a href="TJTransform.html" title="class in org.libjpegturbo.turbojpeg"><code>TJTransform</code></a> instance that specifies the
parameters and/or cropping region for this transform</dd> parameters and/or cropping region for this transform</dd>
<dt><span class="strong">Throws:</span></dt> <dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../org/libjpegturbo/turbojpeg/TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></code></dd></dl> <dd><code><a href="TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></code></dd>
</dl>
</li> </li>
</ul> </ul>
</li> </li>
</ul> </ul>
</section>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
</main>
<!-- ========= END OF CLASS DATA ========= --> <!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== --> <!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom"> <div class="bottomNav"><a id="navbar.bottom">
<!-- --> <!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow"> </a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- --> <!-- -->
</a> </a>
<ul class="navList" title="Navigation"> <ul class="navList" title="Navigation">
<li><a href="../../../org/libjpegturbo/turbojpeg/package-summary.html">Package</a></li> <li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li> <li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li> <li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li> <li><a href="../../../deprecated-list.html">Deprecated</a></li>
@@ -195,16 +249,8 @@
</ul> </ul>
</div> </div>
<div class="subNav"> <div class="subNav">
<ul class="navList">
<li><a href="../../../org/libjpegturbo/turbojpeg/TJCompressor.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?org/libjpegturbo/turbojpeg/TJCustomFilter.html" target="_top">Frames</a></li>
<li><a href="TJCustomFilter.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom"> <ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All Classes</a></li> <li><a href="../../../allclasses.html">All&nbsp;Classes</a></li>
</ul> </ul>
<div> <div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -217,6 +263,9 @@
} }
//--> //-->
</script> </script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div> </div>
<div> <div>
<ul class="subNavList"> <ul class="subNavList">
@@ -224,18 +273,20 @@
<li>Nested&nbsp;|&nbsp;</li> <li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li> <li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li> <li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li> <li><a href="#method.summary">Method</a></li>
</ul> </ul>
<ul class="subNavList"> <ul class="subNavList">
<li>Detail:&nbsp;</li> <li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li> <li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li> <li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li> <li><a href="#method.detail">Method</a></li>
</ul> </ul>
</div> </div>
<a name="skip-navbar_bottom"> <a id="skip.navbar.bottom">
<!-- --> <!-- -->
</a></div> </a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= --> <!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body> </body>
</html> </html>

File diff suppressed because it is too large Load Diff

View File

@@ -1,9 +1,21 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!DOCTYPE HTML>
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc -->
<title>TJException</title> <title>TJException</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
<script type="text/javascript" src="../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../jquery/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="../../../jquery/jquery-ui.min.js"></script>
</head> </head>
<body> <body>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -15,18 +27,31 @@
catch(err) { catch(err) {
} }
//--> //-->
</script> var data = {"i0":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript> <noscript>
<div>JavaScript is disabled on your browser.</div> <div>JavaScript is disabled on your browser.</div>
</noscript> </noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= --> <!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top"> <div class="topNav"><a id="navbar.top">
<!-- --> <!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow"> </a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- --> <!-- -->
</a> </a>
<ul class="navList" title="Navigation"> <ul class="navList" title="Navigation">
<li><a href="../../../org/libjpegturbo/turbojpeg/package-summary.html">Package</a></li> <li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li> <li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li> <li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li> <li><a href="../../../deprecated-list.html">Deprecated</a></li>
@@ -35,16 +60,14 @@
</ul> </ul>
</div> </div>
<div class="subNav"> <div class="subNav">
<ul class="navList">
<li><a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../org/libjpegturbo/turbojpeg/TJScalingFactor.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?org/libjpegturbo/turbojpeg/TJException.html" target="_top">Frames</a></li>
<li><a href="TJException.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top"> <ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All Classes</a></li> <li><a href="../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul> </ul>
<div> <div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -57,29 +80,41 @@
} }
//--> //-->
</script> </script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div> </div>
<div> <div>
<ul class="subNavList"> <ul class="subNavList">
<li>Summary:&nbsp;</li> <li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li> <li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li> <li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li> <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li> <li><a href="#method.summary">Method</a></li>
</ul> </ul>
<ul class="subNavList"> <ul class="subNavList">
<li>Detail:&nbsp;</li> <li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li> <li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li> <li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li> <li><a href="#method.detail">Method</a></li>
</ul> </ul>
</div> </div>
<a name="skip-navbar_top"> <a id="skip.navbar.top">
<!-- --> <!-- -->
</a></div> </a></div>
<!-- ========= END OF TOP NAVBAR ========= --> <!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== --> <!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header"> <div class="header">
<div class="subTitle">org.libjpegturbo.turbojpeg</div> <div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.libjpegturbo.turbojpeg</a></div>
<h2 title="Class TJException" class="title">Class TJException</h2> <h2 title="Class TJException" class="title">Class TJException</h2>
</div> </div>
<div class="contentContainer"> <div class="contentContainer">
@@ -111,13 +146,15 @@
<li class="blockList"> <li class="blockList">
<dl> <dl>
<dt>All Implemented Interfaces:</dt> <dt>All Implemented Interfaces:</dt>
<dd>java.io.Serializable</dd> <dd><code>java.io.Serializable</code></dd>
</dl> </dl>
<hr> <hr>
<br> <pre>public class <span class="typeNameLabel">TJException</span>
<pre>public class <span class="strong">TJException</span>
extends java.io.IOException</pre> extends java.io.IOException</pre>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../serialized-form.html#org.libjpegturbo.turbojpeg.TJException">Serialized Form</a></dd></dl> <dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../serialized-form.html#org.libjpegturbo.turbojpeg.TJException">Serialized Form</a></dd>
</dl>
</li> </li>
</ul> </ul>
</div> </div>
@@ -125,65 +162,76 @@ extends java.io.IOException</pre>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== --> <!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"><a name="constructor_summary"> <li class="blockList"><a id="constructor.summary">
<!-- --> <!-- -->
</a> </a>
<h3>Constructor Summary</h3> <h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation"> <table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption> <caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr> <tr>
<th class="colOne" scope="col">Constructor and Description</th> <th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">
<td class="colOne"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/TJException.html#TJException()">TJException</a></strong>()</code>&nbsp;</td> <th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">TJException</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colOne"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/TJException.html#TJException(java.lang.String)">TJException</a></strong>(java.lang.String&nbsp;message)</code>&nbsp;</td> <th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(java.lang.String)">TJException</a></span>&#8203;(java.lang.String&nbsp;message)</code></th>
<td class="colLast">&nbsp;</td>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">
<td class="colOne"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/TJException.html#TJException(java.lang.String,%20int)">TJException</a></strong>(java.lang.String&nbsp;message, <th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(java.lang.String,int)">TJException</a></span>&#8203;(java.lang.String&nbsp;message,
int&nbsp;code)</code>&nbsp;</td> int&nbsp;code)</code></th>
<td class="colLast">&nbsp;</td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colOne"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/TJException.html#TJException(java.lang.String,%20java.lang.Throwable)">TJException</a></strong>(java.lang.String&nbsp;message, <th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(java.lang.String,java.lang.Throwable)">TJException</a></span>&#8203;(java.lang.String&nbsp;message,
java.lang.Throwable&nbsp;cause)</code>&nbsp;</td> java.lang.Throwable&nbsp;cause)</code></th>
<td class="colLast">&nbsp;</td>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">
<td class="colOne"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/TJException.html#TJException(java.lang.Throwable)">TJException</a></strong>(java.lang.Throwable&nbsp;cause)</code>&nbsp;</td> <th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(java.lang.Throwable)">TJException</a></span>&#8203;(java.lang.Throwable&nbsp;cause)</code></th>
<td class="colLast">&nbsp;</td>
</tr> </tr>
</table> </table>
</li> </li>
</ul> </ul>
</section>
<!-- ========== METHOD SUMMARY =========== --> <!-- ========== METHOD SUMMARY =========== -->
<section>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"><a name="method_summary"> <li class="blockList"><a id="method.summary">
<!-- --> <!-- -->
</a> </a>
<h3>Method Summary</h3> <h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation"> <table class="memberSummary">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption> <caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr> <tr>
<th class="colFirst" scope="col">Modifier and Type</th> <th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th> <th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr> </tr>
<tr class="altColor"> <tr id="i0" class="altColor">
<td class="colFirst"><code>int</code></td> <td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/TJException.html#getErrorCode()">getErrorCode</a></strong>()</code> <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getErrorCode()">getErrorCode</a></span>()</code></th>
<div class="block">Returns a code (one of <a href="../../../org/libjpegturbo/turbojpeg/TJ.html" title="class in org.libjpegturbo.turbojpeg"><code>TJ.ERR_*</code></a>) indicating the severity of the <td class="colLast">
<div class="block">Returns a code (one of <a href="TJ.html" title="class in org.libjpegturbo.turbojpeg"><code>TJ.ERR_*</code></a>) indicating the severity of the
last error.</div> last error.</div>
</td> </td>
</tr> </tr>
</table> </table>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Throwable"> <li class="blockList"><a id="methods.inherited.from.class.java.lang.Throwable">
<!-- --> <!-- -->
</a> </a>
<h3>Methods inherited from class&nbsp;java.lang.Throwable</h3> <h3>Methods inherited from class&nbsp;java.lang.Throwable</h3>
<code>addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString</code></li> <code>addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString</code></li>
</ul> </ul>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object"> <li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- --> <!-- -->
</a> </a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3> <h3>Methods inherited from class&nbsp;java.lang.Object</h3>
@@ -191,6 +239,7 @@ extends java.io.IOException</pre>
</ul> </ul>
</li> </li>
</ul> </ul>
</section>
</li> </li>
</ul> </ul>
</div> </div>
@@ -198,12 +247,13 @@ extends java.io.IOException</pre>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== --> <!-- ========= CONSTRUCTOR DETAIL ======== -->
<section>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"><a name="constructor_detail"> <li class="blockList"><a id="constructor.detail">
<!-- --> <!-- -->
</a> </a>
<h3>Constructor Detail</h3> <h3>Constructor Detail</h3>
<a name="TJException()"> <a id="&lt;init&gt;()">
<!-- --> <!-- -->
</a> </a>
<ul class="blockList"> <ul class="blockList">
@@ -212,80 +262,91 @@ extends java.io.IOException</pre>
<pre>public&nbsp;TJException()</pre> <pre>public&nbsp;TJException()</pre>
</li> </li>
</ul> </ul>
<a name="TJException(java.lang.String, java.lang.Throwable)"> <a id="&lt;init&gt;(java.lang.String,java.lang.Throwable)">
<!-- --> <!-- -->
</a> </a>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<h4>TJException</h4> <h4>TJException</h4>
<pre>public&nbsp;TJException(java.lang.String&nbsp;message, <pre>public&nbsp;TJException&#8203;(java.lang.String&nbsp;message,
java.lang.Throwable&nbsp;cause)</pre> java.lang.Throwable&nbsp;cause)</pre>
</li> </li>
</ul> </ul>
<a name="TJException(java.lang.String)"> <a id="&lt;init&gt;(java.lang.String)">
<!-- --> <!-- -->
</a> </a>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<h4>TJException</h4> <h4>TJException</h4>
<pre>public&nbsp;TJException(java.lang.String&nbsp;message)</pre> <pre>public&nbsp;TJException&#8203;(java.lang.String&nbsp;message)</pre>
</li> </li>
</ul> </ul>
<a name="TJException(java.lang.String, int)"> <a id="&lt;init&gt;(java.lang.String,int)">
<!-- --> <!-- -->
</a> </a>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<h4>TJException</h4> <h4>TJException</h4>
<pre>public&nbsp;TJException(java.lang.String&nbsp;message, <pre>public&nbsp;TJException&#8203;(java.lang.String&nbsp;message,
int&nbsp;code)</pre> int&nbsp;code)</pre>
</li> </li>
</ul> </ul>
<a name="TJException(java.lang.Throwable)"> <a id="&lt;init&gt;(java.lang.Throwable)">
<!-- --> <!-- -->
</a> </a>
<ul class="blockListLast"> <ul class="blockListLast">
<li class="blockList"> <li class="blockList">
<h4>TJException</h4> <h4>TJException</h4>
<pre>public&nbsp;TJException(java.lang.Throwable&nbsp;cause)</pre> <pre>public&nbsp;TJException&#8203;(java.lang.Throwable&nbsp;cause)</pre>
</li> </li>
</ul> </ul>
</li> </li>
</ul> </ul>
</section>
<!-- ============ METHOD DETAIL ========== --> <!-- ============ METHOD DETAIL ========== -->
<section>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"><a name="method_detail"> <li class="blockList"><a id="method.detail">
<!-- --> <!-- -->
</a> </a>
<h3>Method Detail</h3> <h3>Method Detail</h3>
<a name="getErrorCode()"> <a id="getErrorCode()">
<!-- --> <!-- -->
</a> </a>
<ul class="blockListLast"> <ul class="blockListLast">
<li class="blockList"> <li class="blockList">
<h4>getErrorCode</h4> <h4>getErrorCode</h4>
<pre>public&nbsp;int&nbsp;getErrorCode()</pre> <pre class="methodSignature">public&nbsp;int&nbsp;getErrorCode()</pre>
<div class="block">Returns a code (one of <a href="../../../org/libjpegturbo/turbojpeg/TJ.html" title="class in org.libjpegturbo.turbojpeg"><code>TJ.ERR_*</code></a>) indicating the severity of the <div class="block">Returns a code (one of <a href="TJ.html" title="class in org.libjpegturbo.turbojpeg"><code>TJ.ERR_*</code></a>) indicating the severity of the
last error.</div> last error.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>a code (one of <a href="../../../org/libjpegturbo/turbojpeg/TJ.html" title="class in org.libjpegturbo.turbojpeg"><code>TJ.ERR_*</code></a>) indicating the severity of the <dl>
last error.</dd></dl> <dt><span class="returnLabel">Returns:</span></dt>
<dd>a code (one of <a href="TJ.html" title="class in org.libjpegturbo.turbojpeg"><code>TJ.ERR_*</code></a>) indicating the severity of the
last error.</dd>
</dl>
</li> </li>
</ul> </ul>
</li> </li>
</ul> </ul>
</section>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
</main>
<!-- ========= END OF CLASS DATA ========= --> <!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== --> <!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom"> <div class="bottomNav"><a id="navbar.bottom">
<!-- --> <!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow"> </a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- --> <!-- -->
</a> </a>
<ul class="navList" title="Navigation"> <ul class="navList" title="Navigation">
<li><a href="../../../org/libjpegturbo/turbojpeg/package-summary.html">Package</a></li> <li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li> <li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li> <li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li> <li><a href="../../../deprecated-list.html">Deprecated</a></li>
@@ -294,16 +355,8 @@ extends java.io.IOException</pre>
</ul> </ul>
</div> </div>
<div class="subNav"> <div class="subNav">
<ul class="navList">
<li><a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../org/libjpegturbo/turbojpeg/TJScalingFactor.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?org/libjpegturbo/turbojpeg/TJException.html" target="_top">Frames</a></li>
<li><a href="TJException.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom"> <ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All Classes</a></li> <li><a href="../../../allclasses.html">All&nbsp;Classes</a></li>
</ul> </ul>
<div> <div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -316,25 +369,30 @@ extends java.io.IOException</pre>
} }
//--> //-->
</script> </script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div> </div>
<div> <div>
<ul class="subNavList"> <ul class="subNavList">
<li>Summary:&nbsp;</li> <li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li> <li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li> <li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li> <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li> <li><a href="#method.summary">Method</a></li>
</ul> </ul>
<ul class="subNavList"> <ul class="subNavList">
<li>Detail:&nbsp;</li> <li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li> <li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li> <li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li> <li><a href="#method.detail">Method</a></li>
</ul> </ul>
</div> </div>
<a name="skip-navbar_bottom"> <a id="skip.navbar.bottom">
<!-- --> <!-- -->
</a></div> </a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= --> <!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body> </body>
</html> </html>

View File

@@ -1,9 +1,21 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!DOCTYPE HTML>
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc -->
<title>TJScalingFactor</title> <title>TJScalingFactor</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
<script type="text/javascript" src="../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../jquery/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="../../../jquery/jquery-ui.min.js"></script>
</head> </head>
<body> <body>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -15,18 +27,31 @@
catch(err) { catch(err) {
} }
//--> //-->
</script> var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript> <noscript>
<div>JavaScript is disabled on your browser.</div> <div>JavaScript is disabled on your browser.</div>
</noscript> </noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= --> <!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top"> <div class="topNav"><a id="navbar.top">
<!-- --> <!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow"> </a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- --> <!-- -->
</a> </a>
<ul class="navList" title="Navigation"> <ul class="navList" title="Navigation">
<li><a href="../../../org/libjpegturbo/turbojpeg/package-summary.html">Package</a></li> <li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li> <li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li> <li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li> <li><a href="../../../deprecated-list.html">Deprecated</a></li>
@@ -35,16 +60,14 @@
</ul> </ul>
</div> </div>
<div class="subNav"> <div class="subNav">
<ul class="navList">
<li><a href="../../../org/libjpegturbo/turbojpeg/TJException.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../org/libjpegturbo/turbojpeg/TJTransform.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?org/libjpegturbo/turbojpeg/TJScalingFactor.html" target="_top">Frames</a></li>
<li><a href="TJScalingFactor.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top"> <ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All Classes</a></li> <li><a href="../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul> </ul>
<div> <div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -57,29 +80,41 @@
} }
//--> //-->
</script> </script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div> </div>
<div> <div>
<ul class="subNavList"> <ul class="subNavList">
<li>Summary:&nbsp;</li> <li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li> <li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li> <li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li> <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li> <li><a href="#method.summary">Method</a></li>
</ul> </ul>
<ul class="subNavList"> <ul class="subNavList">
<li>Detail:&nbsp;</li> <li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li> <li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li> <li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li> <li><a href="#method.detail">Method</a></li>
</ul> </ul>
</div> </div>
<a name="skip-navbar_top"> <a id="skip.navbar.top">
<!-- --> <!-- -->
</a></div> </a></div>
<!-- ========= END OF TOP NAVBAR ========= --> <!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== --> <!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header"> <div class="header">
<div class="subTitle">org.libjpegturbo.turbojpeg</div> <div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.libjpegturbo.turbojpeg</a></div>
<h2 title="Class TJScalingFactor" class="title">Class TJScalingFactor</h2> <h2 title="Class TJScalingFactor" class="title">Class TJScalingFactor</h2>
</div> </div>
<div class="contentContainer"> <div class="contentContainer">
@@ -95,8 +130,7 @@
<ul class="blockList"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<hr> <hr>
<br> <pre>public class <span class="typeNameLabel">TJScalingFactor</span>
<pre>public class <span class="strong">TJScalingFactor</span>
extends java.lang.Object</pre> extends java.lang.Object</pre>
<div class="block">Fractional scaling factor</div> <div class="block">Fractional scaling factor</div>
</li> </li>
@@ -106,72 +140,83 @@ extends java.lang.Object</pre>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== --> <!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"><a name="constructor_summary"> <li class="blockList"><a id="constructor.summary">
<!-- --> <!-- -->
</a> </a>
<h3>Constructor Summary</h3> <h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation"> <table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption> <caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr> <tr>
<th class="colOne" scope="col">Constructor and Description</th> <th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">
<td class="colOne"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/TJScalingFactor.html#TJScalingFactor(int,%20int)">TJScalingFactor</a></strong>(int&nbsp;num, <th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(int,int)">TJScalingFactor</a></span>&#8203;(int&nbsp;num,
int&nbsp;denom)</code> int&nbsp;denom)</code></th>
<td class="colLast">
<div class="block">Create a TurboJPEG scaling factor instance.</div> <div class="block">Create a TurboJPEG scaling factor instance.</div>
</td> </td>
</tr> </tr>
</table> </table>
</li> </li>
</ul> </ul>
</section>
<!-- ========== METHOD SUMMARY =========== --> <!-- ========== METHOD SUMMARY =========== -->
<section>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"><a name="method_summary"> <li class="blockList"><a id="method.summary">
<!-- --> <!-- -->
</a> </a>
<h3>Method Summary</h3> <h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation"> <table class="memberSummary">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption> <caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr> <tr>
<th class="colFirst" scope="col">Modifier and Type</th> <th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th> <th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr> </tr>
<tr class="altColor"> <tr id="i0" class="altColor">
<td class="colFirst"><code>boolean</code></td> <td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/TJScalingFactor.html#equals(org.libjpegturbo.turbojpeg.TJScalingFactor)">equals</a></strong>(<a href="../../../org/libjpegturbo/turbojpeg/TJScalingFactor.html" title="class in org.libjpegturbo.turbojpeg">TJScalingFactor</a>&nbsp;other)</code> <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#equals(org.libjpegturbo.turbojpeg.TJScalingFactor)">equals</a></span>&#8203;(<a href="TJScalingFactor.html" title="class in org.libjpegturbo.turbojpeg">TJScalingFactor</a>&nbsp;other)</code></th>
<td class="colLast">
<div class="block">Returns true or false, depending on whether this instance and <div class="block">Returns true or false, depending on whether this instance and
<code>other</code> have the same numerator and denominator.</div> <code>other</code> have the same numerator and denominator.</div>
</td> </td>
</tr> </tr>
<tr class="rowColor"> <tr id="i1" class="rowColor">
<td class="colFirst"><code>int</code></td> <td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/TJScalingFactor.html#getDenom()">getDenom</a></strong>()</code> <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getDenom()">getDenom</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns denominator</div> <div class="block">Returns denominator</div>
</td> </td>
</tr> </tr>
<tr class="altColor"> <tr id="i2" class="altColor">
<td class="colFirst"><code>int</code></td> <td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/TJScalingFactor.html#getNum()">getNum</a></strong>()</code> <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getNum()">getNum</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns numerator</div> <div class="block">Returns numerator</div>
</td> </td>
</tr> </tr>
<tr class="rowColor"> <tr id="i3" class="rowColor">
<td class="colFirst"><code>int</code></td> <td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/TJScalingFactor.html#getScaled(int)">getScaled</a></strong>(int&nbsp;dimension)</code> <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getScaled(int)">getScaled</a></span>&#8203;(int&nbsp;dimension)</code></th>
<td class="colLast">
<div class="block">Returns the scaled value of <code>dimension</code>.</div> <div class="block">Returns the scaled value of <code>dimension</code>.</div>
</td> </td>
</tr> </tr>
<tr class="altColor"> <tr id="i4" class="altColor">
<td class="colFirst"><code>boolean</code></td> <td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/TJScalingFactor.html#isOne()">isOne</a></strong>()</code> <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isOne()">isOne</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns true or false, depending on whether this instance is equal to <div class="block">Returns true or false, depending on whether this instance is equal to
1/1.</div> 1/1.</div>
</td> </td>
</tr> </tr>
</table> </table>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object"> <li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- --> <!-- -->
</a> </a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3> <h3>Methods inherited from class&nbsp;java.lang.Object</h3>
@@ -179,6 +224,7 @@ extends java.lang.Object</pre>
</ul> </ul>
</li> </li>
</ul> </ul>
</section>
</li> </li>
</ul> </ul>
</div> </div>
@@ -186,109 +232,139 @@ extends java.lang.Object</pre>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== --> <!-- ========= CONSTRUCTOR DETAIL ======== -->
<section>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"><a name="constructor_detail"> <li class="blockList"><a id="constructor.detail">
<!-- --> <!-- -->
</a> </a>
<h3>Constructor Detail</h3> <h3>Constructor Detail</h3>
<a name="TJScalingFactor(int, int)"> <a id="&lt;init&gt;(int,int)">
<!-- --> <!-- -->
</a> </a>
<ul class="blockListLast"> <ul class="blockListLast">
<li class="blockList"> <li class="blockList">
<h4>TJScalingFactor</h4> <h4>TJScalingFactor</h4>
<pre>public&nbsp;TJScalingFactor(int&nbsp;num, <pre>public&nbsp;TJScalingFactor&#8203;(int&nbsp;num,
int&nbsp;denom)</pre> int&nbsp;denom)</pre>
<div class="block">Create a TurboJPEG scaling factor instance.</div> <div class="block">Create a TurboJPEG scaling factor instance.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>num</code> - numerator</dd><dd><code>denom</code> - denominator</dd></dl> <dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>num</code> - numerator</dd>
<dd><code>denom</code> - denominator</dd>
</dl>
</li> </li>
</ul> </ul>
</li> </li>
</ul> </ul>
</section>
<!-- ============ METHOD DETAIL ========== --> <!-- ============ METHOD DETAIL ========== -->
<section>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"><a name="method_detail"> <li class="blockList"><a id="method.detail">
<!-- --> <!-- -->
</a> </a>
<h3>Method Detail</h3> <h3>Method Detail</h3>
<a name="getNum()"> <a id="getNum()">
<!-- --> <!-- -->
</a> </a>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<h4>getNum</h4> <h4>getNum</h4>
<pre>public&nbsp;int&nbsp;getNum()</pre> <pre class="methodSignature">public&nbsp;int&nbsp;getNum()</pre>
<div class="block">Returns numerator</div> <div class="block">Returns numerator</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>numerator</dd></dl> <dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>numerator</dd>
</dl>
</li> </li>
</ul> </ul>
<a name="getDenom()"> <a id="getDenom()">
<!-- --> <!-- -->
</a> </a>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<h4>getDenom</h4> <h4>getDenom</h4>
<pre>public&nbsp;int&nbsp;getDenom()</pre> <pre class="methodSignature">public&nbsp;int&nbsp;getDenom()</pre>
<div class="block">Returns denominator</div> <div class="block">Returns denominator</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>denominator</dd></dl> <dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>denominator</dd>
</dl>
</li> </li>
</ul> </ul>
<a name="getScaled(int)"> <a id="getScaled(int)">
<!-- --> <!-- -->
</a> </a>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<h4>getScaled</h4> <h4>getScaled</h4>
<pre>public&nbsp;int&nbsp;getScaled(int&nbsp;dimension)</pre> <pre class="methodSignature">public&nbsp;int&nbsp;getScaled&#8203;(int&nbsp;dimension)</pre>
<div class="block">Returns the scaled value of <code>dimension</code>. This function <div class="block">Returns the scaled value of <code>dimension</code>. This function
performs the integer equivalent of performs the integer equivalent of
<code>ceil(dimension * scalingFactor)</code>.</div> <code>ceil(dimension * scalingFactor)</code>.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>dimension</code> - width or height to multiply by this scaling factor</dd> <dl>
<dt><span class="strong">Returns:</span></dt><dd>the scaled value of <code>dimension</code>.</dd></dl> <dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>dimension</code> - width or height to multiply by this scaling factor</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the scaled value of <code>dimension</code>.</dd>
</dl>
</li> </li>
</ul> </ul>
<a name="equals(org.libjpegturbo.turbojpeg.TJScalingFactor)"> <a id="equals(org.libjpegturbo.turbojpeg.TJScalingFactor)">
<!-- --> <!-- -->
</a> </a>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<h4>equals</h4> <h4>equals</h4>
<pre>public&nbsp;boolean&nbsp;equals(<a href="../../../org/libjpegturbo/turbojpeg/TJScalingFactor.html" title="class in org.libjpegturbo.turbojpeg">TJScalingFactor</a>&nbsp;other)</pre> <pre class="methodSignature">public&nbsp;boolean&nbsp;equals&#8203;(<a href="TJScalingFactor.html" title="class in org.libjpegturbo.turbojpeg">TJScalingFactor</a>&nbsp;other)</pre>
<div class="block">Returns true or false, depending on whether this instance and <div class="block">Returns true or false, depending on whether this instance and
<code>other</code> have the same numerator and denominator.</div> <code>other</code> have the same numerator and denominator.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>other</code> - the scaling factor against which to compare this one</dd> <dl>
<dt><span class="strong">Returns:</span></dt><dd>true or false, depending on whether this instance and <dt><span class="paramLabel">Parameters:</span></dt>
<code>other</code> have the same numerator and denominator.</dd></dl> <dd><code>other</code> - the scaling factor against which to compare this one</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true or false, depending on whether this instance and
<code>other</code> have the same numerator and denominator.</dd>
</dl>
</li> </li>
</ul> </ul>
<a name="isOne()"> <a id="isOne()">
<!-- --> <!-- -->
</a> </a>
<ul class="blockListLast"> <ul class="blockListLast">
<li class="blockList"> <li class="blockList">
<h4>isOne</h4> <h4>isOne</h4>
<pre>public&nbsp;boolean&nbsp;isOne()</pre> <pre class="methodSignature">public&nbsp;boolean&nbsp;isOne()</pre>
<div class="block">Returns true or false, depending on whether this instance is equal to <div class="block">Returns true or false, depending on whether this instance is equal to
1/1.</div> 1/1.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>true or false, depending on whether this instance is equal to <dl>
1/1.</dd></dl> <dt><span class="returnLabel">Returns:</span></dt>
<dd>true or false, depending on whether this instance is equal to
1/1.</dd>
</dl>
</li> </li>
</ul> </ul>
</li> </li>
</ul> </ul>
</section>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
</main>
<!-- ========= END OF CLASS DATA ========= --> <!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== --> <!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom"> <div class="bottomNav"><a id="navbar.bottom">
<!-- --> <!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow"> </a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- --> <!-- -->
</a> </a>
<ul class="navList" title="Navigation"> <ul class="navList" title="Navigation">
<li><a href="../../../org/libjpegturbo/turbojpeg/package-summary.html">Package</a></li> <li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li> <li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li> <li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li> <li><a href="../../../deprecated-list.html">Deprecated</a></li>
@@ -297,16 +373,8 @@ extends java.lang.Object</pre>
</ul> </ul>
</div> </div>
<div class="subNav"> <div class="subNav">
<ul class="navList">
<li><a href="../../../org/libjpegturbo/turbojpeg/TJException.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../org/libjpegturbo/turbojpeg/TJTransform.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?org/libjpegturbo/turbojpeg/TJScalingFactor.html" target="_top">Frames</a></li>
<li><a href="TJScalingFactor.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom"> <ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All Classes</a></li> <li><a href="../../../allclasses.html">All&nbsp;Classes</a></li>
</ul> </ul>
<div> <div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -319,25 +387,30 @@ extends java.lang.Object</pre>
} }
//--> //-->
</script> </script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div> </div>
<div> <div>
<ul class="subNavList"> <ul class="subNavList">
<li>Summary:&nbsp;</li> <li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li> <li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li> <li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li> <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li> <li><a href="#method.summary">Method</a></li>
</ul> </ul>
<ul class="subNavList"> <ul class="subNavList">
<li>Detail:&nbsp;</li> <li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li> <li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li> <li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li> <li><a href="#method.detail">Method</a></li>
</ul> </ul>
</div> </div>
<a name="skip-navbar_bottom"> <a id="skip.navbar.bottom">
<!-- --> <!-- -->
</a></div> </a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= --> <!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body> </body>
</html> </html>

File diff suppressed because it is too large Load Diff

View File

@@ -1,9 +1,21 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!DOCTYPE HTML>
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc -->
<title>TJTransformer</title> <title>TJTransformer</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
<script type="text/javascript" src="../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../jquery/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="../../../jquery/jquery-ui.min.js"></script>
</head> </head>
<body> <body>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -15,18 +27,31 @@
catch(err) { catch(err) {
} }
//--> //-->
</script> var data = {"i0":10,"i1":10,"i2":42,"i3":10,"i4":42};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript> <noscript>
<div>JavaScript is disabled on your browser.</div> <div>JavaScript is disabled on your browser.</div>
</noscript> </noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= --> <!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top"> <div class="topNav"><a id="navbar.top">
<!-- --> <!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow"> </a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- --> <!-- -->
</a> </a>
<ul class="navList" title="Navigation"> <ul class="navList" title="Navigation">
<li><a href="../../../org/libjpegturbo/turbojpeg/package-summary.html">Package</a></li> <li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li> <li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li> <li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li> <li><a href="../../../deprecated-list.html">Deprecated</a></li>
@@ -35,16 +60,14 @@
</ul> </ul>
</div> </div>
<div class="subNav"> <div class="subNav">
<ul class="navList">
<li><a href="../../../org/libjpegturbo/turbojpeg/TJTransform.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?org/libjpegturbo/turbojpeg/TJTransformer.html" target="_top">Frames</a></li>
<li><a href="TJTransformer.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top"> <ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All Classes</a></li> <li><a href="../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul> </ul>
<div> <div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -57,29 +80,41 @@
} }
//--> //-->
</script> </script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div> </div>
<div> <div>
<ul class="subNavList"> <ul class="subNavList">
<li>Summary:&nbsp;</li> <li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li> <li>Nested&nbsp;|&nbsp;</li>
<li><a href="#fields_inherited_from_class_org.libjpegturbo.turbojpeg.TJDecompressor">Field</a>&nbsp;|&nbsp;</li> <li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li> <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li> <li><a href="#method.summary">Method</a></li>
</ul> </ul>
<ul class="subNavList"> <ul class="subNavList">
<li>Detail:&nbsp;</li> <li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li> <li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li> <li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li> <li><a href="#method.detail">Method</a></li>
</ul> </ul>
</div> </div>
<a name="skip-navbar_top"> <a id="skip.navbar.top">
<!-- --> <!-- -->
</a></div> </a></div>
<!-- ========= END OF TOP NAVBAR ========= --> <!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== --> <!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header"> <div class="header">
<div class="subTitle">org.libjpegturbo.turbojpeg</div> <div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.libjpegturbo.turbojpeg</a></div>
<h2 title="Class TJTransformer" class="title">Class TJTransformer</h2> <h2 title="Class TJTransformer" class="title">Class TJTransformer</h2>
</div> </div>
<div class="contentContainer"> <div class="contentContainer">
@@ -87,7 +122,7 @@
<li>java.lang.Object</li> <li>java.lang.Object</li>
<li> <li>
<ul class="inheritance"> <ul class="inheritance">
<li><a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg">org.libjpegturbo.turbojpeg.TJDecompressor</a></li> <li><a href="TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg">org.libjpegturbo.turbojpeg.TJDecompressor</a></li>
<li> <li>
<ul class="inheritance"> <ul class="inheritance">
<li>org.libjpegturbo.turbojpeg.TJTransformer</li> <li>org.libjpegturbo.turbojpeg.TJTransformer</li>
@@ -101,12 +136,11 @@
<li class="blockList"> <li class="blockList">
<dl> <dl>
<dt>All Implemented Interfaces:</dt> <dt>All Implemented Interfaces:</dt>
<dd>java.io.Closeable, java.lang.AutoCloseable</dd> <dd><code>java.io.Closeable</code>, <code>java.lang.AutoCloseable</code></dd>
</dl> </dl>
<hr> <hr>
<br> <pre>public class <span class="typeNameLabel">TJTransformer</span>
<pre>public class <span class="strong">TJTransformer</span> extends <a href="TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg">TJDecompressor</a></pre>
extends <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg">TJDecompressor</a></pre>
<div class="block">TurboJPEG lossless transformer</div> <div class="block">TurboJPEG lossless transformer</div>
</li> </li>
</ul> </ul>
@@ -114,47 +148,37 @@ extends <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html" title=
<div class="summary"> <div class="summary">
<ul class="blockList"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field_summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<ul class="blockList">
<li class="blockList"><a name="fields_inherited_from_class_org.libjpegturbo.turbojpeg.TJDecompressor">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.libjpegturbo.turbojpeg.<a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg">TJDecompressor</a></h3>
<code><a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#handle">handle</a>, <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#jpegBuf">jpegBuf</a>, <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#jpegBufSize">jpegBufSize</a>, <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#jpegColorspace">jpegColorspace</a>, <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#jpegFlags">jpegFlags</a>, <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#jpegHeight">jpegHeight</a>, <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#jpegSubsamp">jpegSubsamp</a>, <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#jpegWidth">jpegWidth</a>, <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#yuvImage">yuvImage</a></code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== --> <!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"><a name="constructor_summary"> <li class="blockList"><a id="constructor.summary">
<!-- --> <!-- -->
</a> </a>
<h3>Constructor Summary</h3> <h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation"> <table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption> <caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr> <tr>
<th class="colOne" scope="col">Constructor and Description</th> <th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">
<td class="colOne"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/TJTransformer.html#TJTransformer()">TJTransformer</a></strong>()</code> <th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">TJTransformer</a></span>()</code></th>
<td class="colLast">
<div class="block">Create a TurboJPEG lossless transformer instance.</div> <div class="block">Create a TurboJPEG lossless transformer instance.</div>
</td> </td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colOne"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/TJTransformer.html#TJTransformer(byte[])">TJTransformer</a></strong>(byte[]&nbsp;jpegImage)</code> <th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(byte%5B%5D)">TJTransformer</a></span>&#8203;(byte[]&nbsp;jpegImage)</code></th>
<td class="colLast">
<div class="block">Create a TurboJPEG lossless transformer instance and associate the JPEG <div class="block">Create a TurboJPEG lossless transformer instance and associate the JPEG
source image stored in <code>jpegImage</code> with the newly created source image stored in <code>jpegImage</code> with the newly created
instance.</div> instance.</div>
</td> </td>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">
<td class="colOne"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/TJTransformer.html#TJTransformer(byte[],%20int)">TJTransformer</a></strong>(byte[]&nbsp;jpegImage, <th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(byte%5B%5D,int)">TJTransformer</a></span>&#8203;(byte[]&nbsp;jpegImage,
int&nbsp;imageSize)</code> int&nbsp;imageSize)</code></th>
<td class="colLast">
<div class="block">Create a TurboJPEG lossless transformer instance and associate the JPEG <div class="block">Create a TurboJPEG lossless transformer instance and associate the JPEG
source image of length <code>imageSize</code> bytes stored in source image of length <code>imageSize</code> bytes stored in
<code>jpegImage</code> with the newly created instance.</div> <code>jpegImage</code> with the newly created instance.</div>
@@ -163,54 +187,81 @@ extends <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html" title=
</table> </table>
</li> </li>
</ul> </ul>
</section>
<!-- ========== METHOD SUMMARY =========== --> <!-- ========== METHOD SUMMARY =========== -->
<section>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"><a name="method_summary"> <li class="blockList"><a id="method.summary">
<!-- --> <!-- -->
</a> </a>
<h3>Method Summary</h3> <h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation"> <table class="memberSummary">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption> <caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr> <tr>
<th class="colFirst" scope="col">Modifier and Type</th> <th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th> <th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr> </tr>
<tr class="altColor"> <tr id="i0" class="altColor">
<td class="colFirst"><code>int[]</code></td> <td class="colFirst"><code>int[]</code></td>
<td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/TJTransformer.html#getTransformedSizes()">getTransformedSizes</a></strong>()</code> <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getTransformedSizes()">getTransformedSizes</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns an array containing the sizes of the transformed JPEG images <div class="block">Returns an array containing the sizes of the transformed JPEG images
(in bytes) generated by the most recent transform operation.</div> (in bytes) generated by the most recent transform operation.</div>
</td> </td>
</tr> </tr>
<tr class="rowColor"> <tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td> <td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/TJTransformer.html#transform(byte[][],%20org.libjpegturbo.turbojpeg.TJTransform[],%20int)">transform</a></strong>(byte[][]&nbsp;dstBufs, <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#transform(byte%5B%5D%5B%5D,org.libjpegturbo.turbojpeg.TJTransform%5B%5D)">transform</a></span>&#8203;(byte[][]&nbsp;dstBufs,
<a href="../../../org/libjpegturbo/turbojpeg/TJTransform.html" title="class in org.libjpegturbo.turbojpeg">TJTransform</a>[]&nbsp;transforms, <a href="TJTransform.html" title="class in org.libjpegturbo.turbojpeg">TJTransform</a>[]&nbsp;transforms)</code></th>
int&nbsp;flags)</code> <td class="colLast">
<div class="block">Losslessly transform the JPEG source image associated with this <div class="block">Losslessly transform the JPEG source image associated with this
transformer instance into one or more JPEG images stored in the given transformer instance into one or more JPEG images stored in the given
destination buffers.</div> destination buffers.</div>
</td> </td>
</tr> </tr>
<tr class="altColor"> <tr id="i2" class="altColor">
<td class="colFirst"><code><a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg">TJDecompressor</a>[]</code></td> <td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../org/libjpegturbo/turbojpeg/TJTransformer.html#transform(org.libjpegturbo.turbojpeg.TJTransform[],%20int)">transform</a></strong>(<a href="../../../org/libjpegturbo/turbojpeg/TJTransform.html" title="class in org.libjpegturbo.turbojpeg">TJTransform</a>[]&nbsp;transforms, <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#transform(byte%5B%5D%5B%5D,org.libjpegturbo.turbojpeg.TJTransform%5B%5D,int)">transform</a></span>&#8203;(byte[][]&nbsp;dstBufs,
int&nbsp;flags)</code> <a href="TJTransform.html" title="class in org.libjpegturbo.turbojpeg">TJTransform</a>[]&nbsp;transforms,
int&nbsp;flags)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">Use <a href="TJDecompressor.html#set(int,int)"><code>TJDecompressor.set()</code></a> and
<a href="#transform(byte%5B%5D%5B%5D,org.libjpegturbo.turbojpeg.TJTransform%5B%5D)"><code>transform(byte[][], TJTransform[])</code></a> instead.</div>
</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg">TJDecompressor</a>[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#transform(org.libjpegturbo.turbojpeg.TJTransform%5B%5D)">transform</a></span>&#8203;(<a href="TJTransform.html" title="class in org.libjpegturbo.turbojpeg">TJTransform</a>[]&nbsp;transforms)</code></th>
<td class="colLast">
<div class="block">Losslessly transform the JPEG source image associated with this <div class="block">Losslessly transform the JPEG source image associated with this
transformer instance and return an array of <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg"><code>TJDecompressor</code></a> transformer instance and return an array of <a href="TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg"><code>TJDecompressor</code></a>
instances, each of which has a transformed JPEG image associated with it.</div> instances, each of which has a transformed JPEG image associated with it.</div>
</td> </td>
</tr> </tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg">TJDecompressor</a>[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#transform(org.libjpegturbo.turbojpeg.TJTransform%5B%5D,int)">transform</a></span>&#8203;(<a href="TJTransform.html" title="class in org.libjpegturbo.turbojpeg">TJTransform</a>[]&nbsp;transforms,
int&nbsp;flags)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">Use <a href="TJDecompressor.html#set(int,int)"><code>TJDecompressor.set()</code></a> and
<a href="#transform(org.libjpegturbo.turbojpeg.TJTransform%5B%5D)"><code>transform(TJTransform[])</code></a> instead.</div>
</div>
</td>
</tr>
</table> </table>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_org.libjpegturbo.turbojpeg.TJDecompressor"> <li class="blockList"><a id="methods.inherited.from.class.org.libjpegturbo.turbojpeg.TJDecompressor">
<!-- --> <!-- -->
</a> </a>
<h3>Methods inherited from class&nbsp;org.libjpegturbo.turbojpeg.<a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg">TJDecompressor</a></h3> <h3>Methods inherited from class&nbsp;org.libjpegturbo.turbojpeg.<a href="TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg">TJDecompressor</a></h3>
<code><a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#close()">close</a>, <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#decompress(java.awt.image.BufferedImage,%20int)">decompress</a>, <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#decompress(byte[],%20int,%20int,%20int,%20int,%20int,%20int,%20int)">decompress</a>, <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#decompress(int[],%20int,%20int,%20int,%20int,%20int,%20int,%20int)">decompress</a>, <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#decompress(int,%20int,%20int,%20int)">decompress</a>, <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#decompress(int,%20int,%20int,%20int,%20int)">decompress</a>, <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#decompressToYUV(int,%20int[],%20int,%20int)">decompressToYUV</a>, <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#decompressToYUV(int,%20int,%20int,%20int)">decompressToYUV</a>, <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#decompressToYUV(org.libjpegturbo.turbojpeg.YUVImage,%20int)">decompressToYUV</a>, <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#finalize()">finalize</a>, <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#getColorspace()">getColorspace</a>, <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#getFlags()">getFlags</a>, <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#getHeight()">getHeight</a>, <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#getJPEGBuf()">getJPEGBuf</a>, <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#getJPEGSize()">getJPEGSize</a>, <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#getScaledHeight(int,%20int)">getScaledHeight</a>, <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#getScaledWidth(int,%20int)">getScaledWidth</a>, <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#getSubsamp()">getSubsamp</a>, <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#getWidth()">getWidth</a>, <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#setSourceImage(byte[],%20int)">setSourceImage</a>, <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html#setSourceImage(org.libjpegturbo.turbojpeg.YUVImage)">setSourceImage</a></code></li> <code><a href="TJDecompressor.html#close()">close</a>, <a href="TJDecompressor.html#decompress(byte%5B%5D,int,int,int,int,int,int,int)">decompress</a>, <a href="TJDecompressor.html#decompress(int%5B%5D,int,int,int,int,int,int,int)">decompress</a>, <a href="TJDecompressor.html#decompress(int,int,int,int)">decompress</a>, <a href="TJDecompressor.html#decompress(int,int,int,int,int)">decompress</a>, <a href="TJDecompressor.html#decompress(java.awt.image.BufferedImage,int)">decompress</a>, <a href="TJDecompressor.html#decompress12(int,int)">decompress12</a>, <a href="TJDecompressor.html#decompress12(short%5B%5D,int,int,int,int)">decompress12</a>, <a href="TJDecompressor.html#decompress16(int,int)">decompress16</a>, <a href="TJDecompressor.html#decompress16(short%5B%5D,int,int,int,int)">decompress16</a>, <a href="TJDecompressor.html#decompress8(byte%5B%5D,int,int,int,int)">decompress8</a>, <a href="TJDecompressor.html#decompress8(int)">decompress8</a>, <a href="TJDecompressor.html#decompress8(int%5B%5D,int,int,int,int)">decompress8</a>, <a href="TJDecompressor.html#decompress8(int,int)">decompress8</a>, <a href="TJDecompressor.html#decompress8(java.awt.image.BufferedImage)">decompress8</a>, <a href="TJDecompressor.html#decompressToYUV(int)">decompressToYUV</a>, <a href="TJDecompressor.html#decompressToYUV(int%5B%5D)">decompressToYUV</a>, <a href="TJDecompressor.html#decompressToYUV(int,int%5B%5D,int,int)">decompressToYUV</a>, <a href="TJDecompressor.html#decompressToYUV(int,int,int,int)">decompressToYUV</a>, <a href="TJDecompressor.html#decompressToYUV(org.libjpegturbo.turbojpeg.YUVImage)">decompressToYUV</a>, <a href="TJDecompressor.html#decompressToYUV(org.libjpegturbo.turbojpeg.YUVImage,int)">decompressToYUV</a>, <a href="TJDecompressor.html#finalize()">finalize</a>, <a href="TJDecompressor.html#get(int)">get</a>, <a href="TJDecompressor.html#getColorspace()">getColorspace</a>, <a href="TJDecompressor.html#getHeight()">getHeight</a>, <a href="TJDecompressor.html#getJPEGBuf()">getJPEGBuf</a>, <a href="TJDecompressor.html#getJPEGSize()">getJPEGSize</a>, <a href="TJDecompressor.html#getScaledHeight(int,int)">getScaledHeight</a>, <a href="TJDecompressor.html#getScaledWidth(int,int)">getScaledWidth</a>, <a href="TJDecompressor.html#getSubsamp()">getSubsamp</a>, <a href="TJDecompressor.html#getWidth()">getWidth</a>, <a href="TJDecompressor.html#set(int,int)">set</a>, <a href="TJDecompressor.html#setCroppingRegion(java.awt.Rectangle)">setCroppingRegion</a>, <a href="TJDecompressor.html#setScalingFactor(org.libjpegturbo.turbojpeg.TJScalingFactor)">setScalingFactor</a>, <a href="TJDecompressor.html#setSourceImage(byte%5B%5D,int)">setSourceImage</a>, <a href="TJDecompressor.html#setSourceImage(org.libjpegturbo.turbojpeg.YUVImage)">setSourceImage</a></code></li>
</ul> </ul>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object"> <li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- --> <!-- -->
</a> </a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3> <h3>Methods inherited from class&nbsp;java.lang.Object</h3>
@@ -218,6 +269,7 @@ extends <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html" title=
</ul> </ul>
</li> </li>
</ul> </ul>
</section>
</li> </li>
</ul> </ul>
</div> </div>
@@ -225,78 +277,89 @@ extends <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html" title=
<ul class="blockList"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== --> <!-- ========= CONSTRUCTOR DETAIL ======== -->
<section>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"><a name="constructor_detail"> <li class="blockList"><a id="constructor.detail">
<!-- --> <!-- -->
</a> </a>
<h3>Constructor Detail</h3> <h3>Constructor Detail</h3>
<a name="TJTransformer()"> <a id="&lt;init&gt;()">
<!-- --> <!-- -->
</a> </a>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<h4>TJTransformer</h4> <h4>TJTransformer</h4>
<pre>public&nbsp;TJTransformer() <pre>public&nbsp;TJTransformer()
throws <a href="../../../org/libjpegturbo/turbojpeg/TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></pre> throws <a href="TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></pre>
<div class="block">Create a TurboJPEG lossless transformer instance.</div> <div class="block">Create a TurboJPEG lossless transformer instance.</div>
<dl><dt><span class="strong">Throws:</span></dt> <dl>
<dd><code><a href="../../../org/libjpegturbo/turbojpeg/TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></code></dd></dl> <dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></code></dd>
</dl>
</li> </li>
</ul> </ul>
<a name="TJTransformer(byte[])"> <a id="&lt;init&gt;(byte[])">
<!-- --> <!-- -->
</a> </a>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<h4>TJTransformer</h4> <h4>TJTransformer</h4>
<pre>public&nbsp;TJTransformer(byte[]&nbsp;jpegImage) <pre>public&nbsp;TJTransformer&#8203;(byte[]&nbsp;jpegImage)
throws <a href="../../../org/libjpegturbo/turbojpeg/TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></pre> throws <a href="TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></pre>
<div class="block">Create a TurboJPEG lossless transformer instance and associate the JPEG <div class="block">Create a TurboJPEG lossless transformer instance and associate the JPEG
source image stored in <code>jpegImage</code> with the newly created source image stored in <code>jpegImage</code> with the newly created
instance.</div> instance.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>jpegImage</code> - buffer containing the JPEG source image to transform. <dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>jpegImage</code> - buffer containing the JPEG source image to transform.
(The size of the JPEG image is assumed to be the length of the array.) (The size of the JPEG image is assumed to be the length of the array.)
This buffer is not modified.</dd> This buffer is not modified.</dd>
<dt><span class="strong">Throws:</span></dt> <dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../org/libjpegturbo/turbojpeg/TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></code></dd></dl> <dd><code><a href="TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></code></dd>
</dl>
</li> </li>
</ul> </ul>
<a name="TJTransformer(byte[], int)"> <a id="&lt;init&gt;(byte[],int)">
<!-- --> <!-- -->
</a> </a>
<ul class="blockListLast"> <ul class="blockListLast">
<li class="blockList"> <li class="blockList">
<h4>TJTransformer</h4> <h4>TJTransformer</h4>
<pre>public&nbsp;TJTransformer(byte[]&nbsp;jpegImage, <pre>public&nbsp;TJTransformer&#8203;(byte[]&nbsp;jpegImage,
int&nbsp;imageSize) int&nbsp;imageSize)
throws <a href="../../../org/libjpegturbo/turbojpeg/TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></pre> throws <a href="TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></pre>
<div class="block">Create a TurboJPEG lossless transformer instance and associate the JPEG <div class="block">Create a TurboJPEG lossless transformer instance and associate the JPEG
source image of length <code>imageSize</code> bytes stored in source image of length <code>imageSize</code> bytes stored in
<code>jpegImage</code> with the newly created instance.</div> <code>jpegImage</code> with the newly created instance.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>jpegImage</code> - buffer containing the JPEG source image to transform. <dl>
This buffer is not modified.</dd><dd><code>imageSize</code> - size of the JPEG source image (in bytes)</dd> <dt><span class="paramLabel">Parameters:</span></dt>
<dt><span class="strong">Throws:</span></dt> <dd><code>jpegImage</code> - buffer containing the JPEG source image to transform.
<dd><code><a href="../../../org/libjpegturbo/turbojpeg/TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></code></dd></dl> This buffer is not modified.</dd>
<dd><code>imageSize</code> - size of the JPEG source image (in bytes)</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></code></dd>
</dl>
</li> </li>
</ul> </ul>
</li> </li>
</ul> </ul>
</section>
<!-- ============ METHOD DETAIL ========== --> <!-- ============ METHOD DETAIL ========== -->
<section>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"><a name="method_detail"> <li class="blockList"><a id="method.detail">
<!-- --> <!-- -->
</a> </a>
<h3>Method Detail</h3> <h3>Method Detail</h3>
<a name="transform(byte[][], org.libjpegturbo.turbojpeg.TJTransform[], int)"> <a id="transform(byte[][],org.libjpegturbo.turbojpeg.TJTransform[])">
<!-- --> <!-- -->
</a> </a>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<h4>transform</h4> <h4>transform</h4>
<pre>public&nbsp;void&nbsp;transform(byte[][]&nbsp;dstBufs, <pre class="methodSignature">public&nbsp;void&nbsp;transform&#8203;(byte[][]&nbsp;dstBufs,
<a href="../../../org/libjpegturbo/turbojpeg/TJTransform.html" title="class in org.libjpegturbo.turbojpeg">TJTransform</a>[]&nbsp;transforms, <a href="TJTransform.html" title="class in org.libjpegturbo.turbojpeg">TJTransform</a>[]&nbsp;transforms)
int&nbsp;flags) throws <a href="TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></pre>
throws <a href="../../../org/libjpegturbo/turbojpeg/TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></pre>
<div class="block">Losslessly transform the JPEG source image associated with this <div class="block">Losslessly transform the JPEG source image associated with this
transformer instance into one or more JPEG images stored in the given transformer instance into one or more JPEG images stored in the given
destination buffers. Lossless transforms work by moving the raw destination buffers. Lossless transforms work by moving the raw
@@ -309,69 +372,124 @@ extends <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html" title=
provides a means of generating multiple transformed images from the same provides a means of generating multiple transformed images from the same
source or of applying multiple transformations simultaneously, in order to source or of applying multiple transformations simultaneously, in order to
eliminate the need to read the source coefficients multiple times.</div> eliminate the need to read the source coefficients multiple times.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>dstBufs</code> - an array of JPEG destination buffers. <dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>dstBufs</code> - an array of JPEG destination buffers.
<code>dstbufs[i]</code> will receive a JPEG image that has been <code>dstbufs[i]</code> will receive a JPEG image that has been
transformed using the parameters in <code>transforms[i]</code>. Use transformed using the parameters in <code>transforms[i]</code>. Use
<a href="../../../org/libjpegturbo/turbojpeg/TJ.html#bufSize(int,%20int,%20int)"><code>TJ.bufSize(int, int, int)</code></a> to determine the maximum size for each buffer based on <a href="TJ.html#bufSize(int,int,int)"><code>TJ.bufSize()</code></a> to determine the maximum size for each
the transformed or cropped width and height and the level of subsampling buffer based on the transformed or cropped width and height and the level
used in the source image.</dd><dd><code>transforms</code> - an array of <a href="../../../org/libjpegturbo/turbojpeg/TJTransform.html" title="class in org.libjpegturbo.turbojpeg"><code>TJTransform</code></a> instances, each of of subsampling used in the source image.</dd>
<dd><code>transforms</code> - an array of <a href="TJTransform.html" title="class in org.libjpegturbo.turbojpeg"><code>TJTransform</code></a> instances, each of
which specifies the transform parameters and/or cropping region for the which specifies the transform parameters and/or cropping region for the
corresponding transformed JPEG image</dd><dd><code>flags</code> - the bitwise OR of one or more of corresponding transformed JPEG image</dd>
<a href="../../../org/libjpegturbo/turbojpeg/TJ.html#FLAG_BOTTOMUP"><code>TJ.FLAG_*</code></a></dd> <dt><span class="throwsLabel">Throws:</span></dt>
<dt><span class="strong">Throws:</span></dt> <dd><code><a href="TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></code></dd>
<dd><code><a href="../../../org/libjpegturbo/turbojpeg/TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></code></dd></dl> </dl>
</li> </li>
</ul> </ul>
<a name="transform(org.libjpegturbo.turbojpeg.TJTransform[], int)"> <a id="transform(byte[][],org.libjpegturbo.turbojpeg.TJTransform[],int)">
<!-- --> <!-- -->
</a> </a>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<h4>transform</h4> <h4>transform</h4>
<pre>public&nbsp;<a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg">TJDecompressor</a>[]&nbsp;transform(<a href="../../../org/libjpegturbo/turbojpeg/TJTransform.html" title="class in org.libjpegturbo.turbojpeg">TJTransform</a>[]&nbsp;transforms, <pre class="methodSignature">@Deprecated
int&nbsp;flags) public&nbsp;void&nbsp;transform&#8203;(byte[][]&nbsp;dstBufs,
throws <a href="../../../org/libjpegturbo/turbojpeg/TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></pre> <a href="TJTransform.html" title="class in org.libjpegturbo.turbojpeg">TJTransform</a>[]&nbsp;transforms,
<div class="block">Losslessly transform the JPEG source image associated with this int&nbsp;flags)
transformer instance and return an array of <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg"><code>TJDecompressor</code></a> throws <a href="TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></pre>
instances, each of which has a transformed JPEG image associated with it.</div> <div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>transforms</code> - an array of <a href="../../../org/libjpegturbo/turbojpeg/TJTransform.html" title="class in org.libjpegturbo.turbojpeg"><code>TJTransform</code></a> instances, each of <div class="deprecationComment">Use <a href="TJDecompressor.html#set(int,int)"><code>TJDecompressor.set()</code></a> and
which specifies the transform parameters and/or cropping region for the <a href="#transform(byte%5B%5D%5B%5D,org.libjpegturbo.turbojpeg.TJTransform%5B%5D)"><code>transform(byte[][], TJTransform[])</code></a> instead.</div>
corresponding transformed JPEG image</dd><dd><code>flags</code> - the bitwise OR of one or more of </div>
<a href="../../../org/libjpegturbo/turbojpeg/TJ.html#FLAG_BOTTOMUP"><code>TJ.FLAG_*</code></a></dd> <dl>
<dt><span class="strong">Returns:</span></dt><dd>an array of <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg"><code>TJDecompressor</code></a> instances, each of <dt><span class="throwsLabel">Throws:</span></dt>
which has a transformed JPEG image associated with it.</dd> <dd><code><a href="TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></code></dd>
<dt><span class="strong">Throws:</span></dt> </dl>
<dd><code><a href="../../../org/libjpegturbo/turbojpeg/TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></code></dd></dl>
</li> </li>
</ul> </ul>
<a name="getTransformedSizes()"> <a id="transform(org.libjpegturbo.turbojpeg.TJTransform[])">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>transform</h4>
<pre class="methodSignature">public&nbsp;<a href="TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg">TJDecompressor</a>[]&nbsp;transform&#8203;(<a href="TJTransform.html" title="class in org.libjpegturbo.turbojpeg">TJTransform</a>[]&nbsp;transforms)
throws <a href="TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></pre>
<div class="block">Losslessly transform the JPEG source image associated with this
transformer instance and return an array of <a href="TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg"><code>TJDecompressor</code></a>
instances, each of which has a transformed JPEG image associated with it.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>transforms</code> - an array of <a href="TJTransform.html" title="class in org.libjpegturbo.turbojpeg"><code>TJTransform</code></a> instances, each of
which specifies the transform parameters and/or cropping region for the
corresponding transformed JPEG image</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an array of <a href="TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg"><code>TJDecompressor</code></a> instances, each of
which has a transformed JPEG image associated with it.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></code></dd>
</dl>
</li>
</ul>
<a id="transform(org.libjpegturbo.turbojpeg.TJTransform[],int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>transform</h4>
<pre class="methodSignature">@Deprecated
public&nbsp;<a href="TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg">TJDecompressor</a>[]&nbsp;transform&#8203;(<a href="TJTransform.html" title="class in org.libjpegturbo.turbojpeg">TJTransform</a>[]&nbsp;transforms,
int&nbsp;flags)
throws <a href="TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">Use <a href="TJDecompressor.html#set(int,int)"><code>TJDecompressor.set()</code></a> and
<a href="#transform(org.libjpegturbo.turbojpeg.TJTransform%5B%5D)"><code>transform(TJTransform[])</code></a> instead.</div>
</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></code></dd>
</dl>
</li>
</ul>
<a id="getTransformedSizes()">
<!-- --> <!-- -->
</a> </a>
<ul class="blockListLast"> <ul class="blockListLast">
<li class="blockList"> <li class="blockList">
<h4>getTransformedSizes</h4> <h4>getTransformedSizes</h4>
<pre>public&nbsp;int[]&nbsp;getTransformedSizes()</pre> <pre class="methodSignature">public&nbsp;int[]&nbsp;getTransformedSizes()</pre>
<div class="block">Returns an array containing the sizes of the transformed JPEG images <div class="block">Returns an array containing the sizes of the transformed JPEG images
(in bytes) generated by the most recent transform operation.</div> (in bytes) generated by the most recent transform operation.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>an array containing the sizes of the transformed JPEG images <dl>
(in bytes) generated by the most recent transform operation.</dd></dl> <dt><span class="returnLabel">Returns:</span></dt>
<dd>an array containing the sizes of the transformed JPEG images
(in bytes) generated by the most recent transform operation.</dd>
</dl>
</li> </li>
</ul> </ul>
</li> </li>
</ul> </ul>
</section>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
</main>
<!-- ========= END OF CLASS DATA ========= --> <!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== --> <!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom"> <div class="bottomNav"><a id="navbar.bottom">
<!-- --> <!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow"> </a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- --> <!-- -->
</a> </a>
<ul class="navList" title="Navigation"> <ul class="navList" title="Navigation">
<li><a href="../../../org/libjpegturbo/turbojpeg/package-summary.html">Package</a></li> <li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li> <li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li> <li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li> <li><a href="../../../deprecated-list.html">Deprecated</a></li>
@@ -380,16 +498,8 @@ extends <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html" title=
</ul> </ul>
</div> </div>
<div class="subNav"> <div class="subNav">
<ul class="navList">
<li><a href="../../../org/libjpegturbo/turbojpeg/TJTransform.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?org/libjpegturbo/turbojpeg/TJTransformer.html" target="_top">Frames</a></li>
<li><a href="TJTransformer.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom"> <ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All Classes</a></li> <li><a href="../../../allclasses.html">All&nbsp;Classes</a></li>
</ul> </ul>
<div> <div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -402,25 +512,30 @@ extends <a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html" title=
} }
//--> //-->
</script> </script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div> </div>
<div> <div>
<ul class="subNavList"> <ul class="subNavList">
<li>Summary:&nbsp;</li> <li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li> <li>Nested&nbsp;|&nbsp;</li>
<li><a href="#fields_inherited_from_class_org.libjpegturbo.turbojpeg.TJDecompressor">Field</a>&nbsp;|&nbsp;</li> <li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li> <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li> <li><a href="#method.summary">Method</a></li>
</ul> </ul>
<ul class="subNavList"> <ul class="subNavList">
<li>Detail:&nbsp;</li> <li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li> <li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li> <li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li> <li><a href="#method.detail">Method</a></li>
</ul> </ul>
</div> </div>
<a name="skip-navbar_bottom"> <a id="skip.navbar.bottom">
<!-- --> <!-- -->
</a></div> </a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= --> <!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body> </body>
</html> </html>

File diff suppressed because it is too large Load Diff

View File

@@ -1,31 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>org.libjpegturbo.turbojpeg</title>
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
</head>
<body>
<h1 class="bar"><a href="../../../org/libjpegturbo/turbojpeg/package-summary.html" target="classFrame">org.libjpegturbo.turbojpeg</a></h1>
<div class="indexContainer">
<h2 title="Interfaces">Interfaces</h2>
<ul title="Interfaces">
<li><a href="TJCustomFilter.html" title="interface in org.libjpegturbo.turbojpeg" target="classFrame"><i>TJCustomFilter</i></a></li>
</ul>
<h2 title="Classes">Classes</h2>
<ul title="Classes">
<li><a href="TJ.html" title="class in org.libjpegturbo.turbojpeg" target="classFrame">TJ</a></li>
<li><a href="TJCompressor.html" title="class in org.libjpegturbo.turbojpeg" target="classFrame">TJCompressor</a></li>
<li><a href="TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg" target="classFrame">TJDecompressor</a></li>
<li><a href="TJScalingFactor.html" title="class in org.libjpegturbo.turbojpeg" target="classFrame">TJScalingFactor</a></li>
<li><a href="TJTransform.html" title="class in org.libjpegturbo.turbojpeg" target="classFrame">TJTransform</a></li>
<li><a href="TJTransformer.html" title="class in org.libjpegturbo.turbojpeg" target="classFrame">TJTransformer</a></li>
<li><a href="YUVImage.html" title="class in org.libjpegturbo.turbojpeg" target="classFrame">YUVImage</a></li>
</ul>
<h2 title="Exceptions">Exceptions</h2>
<ul title="Exceptions">
<li><a href="TJException.html" title="class in org.libjpegturbo.turbojpeg" target="classFrame">TJException</a></li>
</ul>
</div>
</body>
</html>

View File

@@ -1,9 +1,21 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!DOCTYPE HTML>
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc -->
<title>org.libjpegturbo.turbojpeg</title> <title>org.libjpegturbo.turbojpeg</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
<script type="text/javascript" src="../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../jquery/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="../../../jquery/jquery-ui.min.js"></script>
</head> </head>
<body> <body>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -15,18 +27,25 @@
catch(err) { catch(err) {
} }
//--> //-->
</script> var pathtoroot = "../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript> <noscript>
<div>JavaScript is disabled on your browser.</div> <div>JavaScript is disabled on your browser.</div>
</noscript> </noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= --> <!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top"> <div class="topNav"><a id="navbar.top">
<!-- --> <!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow"> </a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- --> <!-- -->
</a> </a>
<ul class="navList" title="Navigation"> <ul class="navList" title="Navigation">
<li><a href="../../../org/libjpegturbo/turbojpeg/package-summary.html">Package</a></li> <li class="navBarCell1Rev">Package</li>
<li>Class</li> <li>Class</li>
<li><a href="package-tree.html">Tree</a></li> <li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li> <li><a href="../../../deprecated-list.html">Deprecated</a></li>
@@ -35,16 +54,14 @@
</ul> </ul>
</div> </div>
<div class="subNav"> <div class="subNav">
<ul class="navList">
<li>Prev Package</li>
<li>Next Package</li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?org/libjpegturbo/turbojpeg/package-summary.html" target="_top">Frames</a></li>
<li><a href="package-summary.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top"> <ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All Classes</a></li> <li><a href="../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul> </ul>
<div> <div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -57,18 +74,30 @@
} }
//--> //-->
</script> </script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div> </div>
<a name="skip-navbar_top"> <a id="skip.navbar.top">
<!-- --> <!-- -->
</a></div> </a></div>
<!-- ========= END OF TOP NAVBAR ========= --> <!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<main role="main">
<div class="header"> <div class="header">
<h1 title="Package" class="title">Package&nbsp;org.libjpegturbo.turbojpeg</h1> <h1 title="Package" class="title">Package&nbsp;org.libjpegturbo.turbojpeg</h1>
</div> </div>
<div class="contentContainer"> <div class="contentContainer">
<ul class="blockList"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<table class="packageSummary" border="0" cellpadding="3" cellspacing="0" summary="Interface Summary table, listing interfaces, and an explanation"> <table class="typeSummary">
<caption><span>Interface Summary</span><span class="tabEnd">&nbsp;</span></caption> <caption><span>Interface Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr> <tr>
<th class="colFirst" scope="col">Interface</th> <th class="colFirst" scope="col">Interface</th>
@@ -76,7 +105,7 @@
</tr> </tr>
<tbody> <tbody>
<tr class="altColor"> <tr class="altColor">
<td class="colFirst"><a href="../../../org/libjpegturbo/turbojpeg/TJCustomFilter.html" title="interface in org.libjpegturbo.turbojpeg">TJCustomFilter</a></td> <th class="colFirst" scope="row"><a href="TJCustomFilter.html" title="interface in org.libjpegturbo.turbojpeg">TJCustomFilter</a></th>
<td class="colLast"> <td class="colLast">
<div class="block">Custom filter callback interface</div> <div class="block">Custom filter callback interface</div>
</td> </td>
@@ -85,7 +114,7 @@
</table> </table>
</li> </li>
<li class="blockList"> <li class="blockList">
<table class="packageSummary" border="0" cellpadding="3" cellspacing="0" summary="Class Summary table, listing classes, and an explanation"> <table class="typeSummary">
<caption><span>Class Summary</span><span class="tabEnd">&nbsp;</span></caption> <caption><span>Class Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr> <tr>
<th class="colFirst" scope="col">Class</th> <th class="colFirst" scope="col">Class</th>
@@ -93,43 +122,43 @@
</tr> </tr>
<tbody> <tbody>
<tr class="altColor"> <tr class="altColor">
<td class="colFirst"><a href="../../../org/libjpegturbo/turbojpeg/TJ.html" title="class in org.libjpegturbo.turbojpeg">TJ</a></td> <th class="colFirst" scope="row"><a href="TJ.html" title="class in org.libjpegturbo.turbojpeg">TJ</a></th>
<td class="colLast"> <td class="colLast">
<div class="block">TurboJPEG utility class (cannot be instantiated)</div> <div class="block">TurboJPEG utility class (cannot be instantiated)</div>
</td> </td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colFirst"><a href="../../../org/libjpegturbo/turbojpeg/TJCompressor.html" title="class in org.libjpegturbo.turbojpeg">TJCompressor</a></td> <th class="colFirst" scope="row"><a href="TJCompressor.html" title="class in org.libjpegturbo.turbojpeg">TJCompressor</a></th>
<td class="colLast"> <td class="colLast">
<div class="block">TurboJPEG compressor</div> <div class="block">TurboJPEG compressor</div>
</td> </td>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">
<td class="colFirst"><a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg">TJDecompressor</a></td> <th class="colFirst" scope="row"><a href="TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg">TJDecompressor</a></th>
<td class="colLast"> <td class="colLast">
<div class="block">TurboJPEG decompressor</div> <div class="block">TurboJPEG decompressor</div>
</td> </td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colFirst"><a href="../../../org/libjpegturbo/turbojpeg/TJScalingFactor.html" title="class in org.libjpegturbo.turbojpeg">TJScalingFactor</a></td> <th class="colFirst" scope="row"><a href="TJScalingFactor.html" title="class in org.libjpegturbo.turbojpeg">TJScalingFactor</a></th>
<td class="colLast"> <td class="colLast">
<div class="block">Fractional scaling factor</div> <div class="block">Fractional scaling factor</div>
</td> </td>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">
<td class="colFirst"><a href="../../../org/libjpegturbo/turbojpeg/TJTransform.html" title="class in org.libjpegturbo.turbojpeg">TJTransform</a></td> <th class="colFirst" scope="row"><a href="TJTransform.html" title="class in org.libjpegturbo.turbojpeg">TJTransform</a></th>
<td class="colLast"> <td class="colLast">
<div class="block">Lossless transform parameters</div> <div class="block">Lossless transform parameters</div>
</td> </td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colFirst"><a href="../../../org/libjpegturbo/turbojpeg/TJTransformer.html" title="class in org.libjpegturbo.turbojpeg">TJTransformer</a></td> <th class="colFirst" scope="row"><a href="TJTransformer.html" title="class in org.libjpegturbo.turbojpeg">TJTransformer</a></th>
<td class="colLast"> <td class="colLast">
<div class="block">TurboJPEG lossless transformer</div> <div class="block">TurboJPEG lossless transformer</div>
</td> </td>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">
<td class="colFirst"><a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html" title="class in org.libjpegturbo.turbojpeg">YUVImage</a></td> <th class="colFirst" scope="row"><a href="YUVImage.html" title="class in org.libjpegturbo.turbojpeg">YUVImage</a></th>
<td class="colLast"> <td class="colLast">
<div class="block">This class encapsulates a planar YUV image and the metadata <div class="block">This class encapsulates a planar YUV image and the metadata
associated with it.</div> associated with it.</div>
@@ -139,7 +168,7 @@
</table> </table>
</li> </li>
<li class="blockList"> <li class="blockList">
<table class="packageSummary" border="0" cellpadding="3" cellspacing="0" summary="Exception Summary table, listing exceptions, and an explanation"> <table class="typeSummary">
<caption><span>Exception Summary</span><span class="tabEnd">&nbsp;</span></caption> <caption><span>Exception Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr> <tr>
<th class="colFirst" scope="col">Exception</th> <th class="colFirst" scope="col">Exception</th>
@@ -147,7 +176,7 @@
</tr> </tr>
<tbody> <tbody>
<tr class="altColor"> <tr class="altColor">
<td class="colFirst"><a href="../../../org/libjpegturbo/turbojpeg/TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></td> <th class="colFirst" scope="row"><a href="TJException.html" title="class in org.libjpegturbo.turbojpeg">TJException</a></th>
<td class="colLast">&nbsp;</td> <td class="colLast">&nbsp;</td>
</tr> </tr>
</tbody> </tbody>
@@ -155,14 +184,19 @@
</li> </li>
</ul> </ul>
</div> </div>
</main>
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== --> <!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom"> <div class="bottomNav"><a id="navbar.bottom">
<!-- --> <!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow"> </a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- --> <!-- -->
</a> </a>
<ul class="navList" title="Navigation"> <ul class="navList" title="Navigation">
<li><a href="../../../org/libjpegturbo/turbojpeg/package-summary.html">Package</a></li> <li class="navBarCell1Rev">Package</li>
<li>Class</li> <li>Class</li>
<li><a href="package-tree.html">Tree</a></li> <li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li> <li><a href="../../../deprecated-list.html">Deprecated</a></li>
@@ -171,16 +205,8 @@
</ul> </ul>
</div> </div>
<div class="subNav"> <div class="subNav">
<ul class="navList">
<li>Prev Package</li>
<li>Next Package</li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?org/libjpegturbo/turbojpeg/package-summary.html" target="_top">Frames</a></li>
<li><a href="package-summary.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom"> <ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All Classes</a></li> <li><a href="../../../allclasses.html">All&nbsp;Classes</a></li>
</ul> </ul>
<div> <div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -193,10 +219,15 @@
} }
//--> //-->
</script> </script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div> </div>
<a name="skip-navbar_bottom"> <a id="skip.navbar.bottom">
<!-- --> <!-- -->
</a></div> </a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= --> <!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body> </body>
</html> </html>

View File

@@ -1,9 +1,21 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!DOCTYPE HTML>
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc -->
<title>org.libjpegturbo.turbojpeg Class Hierarchy</title> <title>org.libjpegturbo.turbojpeg Class Hierarchy</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
<script type="text/javascript" src="../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../jquery/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="../../../jquery/jquery-ui.min.js"></script>
</head> </head>
<body> <body>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -15,18 +27,25 @@
catch(err) { catch(err) {
} }
//--> //-->
</script> var pathtoroot = "../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript> <noscript>
<div>JavaScript is disabled on your browser.</div> <div>JavaScript is disabled on your browser.</div>
</noscript> </noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= --> <!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top"> <div class="topNav"><a id="navbar.top">
<!-- --> <!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow"> </a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- --> <!-- -->
</a> </a>
<ul class="navList" title="Navigation"> <ul class="navList" title="Navigation">
<li><a href="../../../org/libjpegturbo/turbojpeg/package-summary.html">Package</a></li> <li><a href="package-summary.html">Package</a></li>
<li>Class</li> <li>Class</li>
<li class="navBarCell1Rev">Tree</li> <li class="navBarCell1Rev">Tree</li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li> <li><a href="../../../deprecated-list.html">Deprecated</a></li>
@@ -35,16 +54,14 @@
</ul> </ul>
</div> </div>
<div class="subNav"> <div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?org/libjpegturbo/turbojpeg/package-tree.html" target="_top">Frames</a></li>
<li><a href="package-tree.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top"> <ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All Classes</a></li> <li><a href="../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul> </ul>
<div> <div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -57,70 +74,91 @@
} }
//--> //-->
</script> </script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div> </div>
<a name="skip-navbar_top"> <a id="skip.navbar.top">
<!-- --> <!-- -->
</a></div> </a></div>
<!-- ========= END OF TOP NAVBAR ========= --> <!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<main role="main">
<div class="header"> <div class="header">
<h1 class="title">Hierarchy For Package org.libjpegturbo.turbojpeg</h1> <h1 class="title">Hierarchy For Package org.libjpegturbo.turbojpeg</h1>
</div> </div>
<div class="contentContainer"> <div class="contentContainer">
<section>
<h2 title="Class Hierarchy">Class Hierarchy</h2> <h2 title="Class Hierarchy">Class Hierarchy</h2>
<ul> <ul>
<li type="circle">java.lang.Object <li class="circle">java.lang.Object
<ul> <ul>
<li type="circle">java.awt.geom.RectangularShape (implements java.lang.Cloneable, java.awt.Shape) <li class="circle">java.awt.geom.RectangularShape (implements java.lang.Cloneable, java.awt.Shape)
<ul> <ul>
<li type="circle">java.awt.geom.Rectangle2D <li class="circle">java.awt.geom.Rectangle2D
<ul> <ul>
<li type="circle">java.awt.Rectangle (implements java.io.Serializable, java.awt.Shape) <li class="circle">java.awt.Rectangle (implements java.io.Serializable, java.awt.Shape)
<ul> <ul>
<li type="circle">org.libjpegturbo.turbojpeg.<a href="../../../org/libjpegturbo/turbojpeg/TJTransform.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">TJTransform</span></a></li> <li class="circle">org.libjpegturbo.turbojpeg.<a href="TJTransform.html" title="class in org.libjpegturbo.turbojpeg"><span class="typeNameLink">TJTransform</span></a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
</li> </li>
</ul> </ul>
</li> </li>
<li type="circle">java.lang.Throwable (implements java.io.Serializable) <li class="circle">java.lang.Throwable (implements java.io.Serializable)
<ul> <ul>
<li type="circle">java.lang.Exception <li class="circle">java.lang.Exception
<ul> <ul>
<li type="circle">java.io.IOException <li class="circle">java.io.IOException
<ul> <ul>
<li type="circle">org.libjpegturbo.turbojpeg.<a href="../../../org/libjpegturbo/turbojpeg/TJException.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">TJException</span></a></li> <li class="circle">org.libjpegturbo.turbojpeg.<a href="TJException.html" title="class in org.libjpegturbo.turbojpeg"><span class="typeNameLink">TJException</span></a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
</li> </li>
</ul> </ul>
</li> </li>
<li type="circle">org.libjpegturbo.turbojpeg.<a href="../../../org/libjpegturbo/turbojpeg/TJ.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">TJ</span></a></li> <li class="circle">org.libjpegturbo.turbojpeg.<a href="TJ.html" title="class in org.libjpegturbo.turbojpeg"><span class="typeNameLink">TJ</span></a></li>
<li type="circle">org.libjpegturbo.turbojpeg.<a href="../../../org/libjpegturbo/turbojpeg/TJCompressor.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">TJCompressor</span></a> (implements java.io.Closeable)</li> <li class="circle">org.libjpegturbo.turbojpeg.<a href="TJCompressor.html" title="class in org.libjpegturbo.turbojpeg"><span class="typeNameLink">TJCompressor</span></a> (implements java.io.Closeable)</li>
<li type="circle">org.libjpegturbo.turbojpeg.<a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">TJDecompressor</span></a> (implements java.io.Closeable) <li class="circle">org.libjpegturbo.turbojpeg.<a href="TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg"><span class="typeNameLink">TJDecompressor</span></a> (implements java.io.Closeable)
<ul> <ul>
<li type="circle">org.libjpegturbo.turbojpeg.<a href="../../../org/libjpegturbo/turbojpeg/TJTransformer.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">TJTransformer</span></a></li> <li class="circle">org.libjpegturbo.turbojpeg.<a href="TJTransformer.html" title="class in org.libjpegturbo.turbojpeg"><span class="typeNameLink">TJTransformer</span></a></li>
</ul> </ul>
</li> </li>
<li type="circle">org.libjpegturbo.turbojpeg.<a href="../../../org/libjpegturbo/turbojpeg/TJScalingFactor.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">TJScalingFactor</span></a></li> <li class="circle">org.libjpegturbo.turbojpeg.<a href="TJScalingFactor.html" title="class in org.libjpegturbo.turbojpeg"><span class="typeNameLink">TJScalingFactor</span></a></li>
<li type="circle">org.libjpegturbo.turbojpeg.<a href="../../../org/libjpegturbo/turbojpeg/YUVImage.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">YUVImage</span></a></li> <li class="circle">org.libjpegturbo.turbojpeg.<a href="YUVImage.html" title="class in org.libjpegturbo.turbojpeg"><span class="typeNameLink">YUVImage</span></a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
</section>
<section>
<h2 title="Interface Hierarchy">Interface Hierarchy</h2> <h2 title="Interface Hierarchy">Interface Hierarchy</h2>
<ul> <ul>
<li type="circle">org.libjpegturbo.turbojpeg.<a href="../../../org/libjpegturbo/turbojpeg/TJCustomFilter.html" title="interface in org.libjpegturbo.turbojpeg"><span class="strong">TJCustomFilter</span></a></li> <li class="circle">org.libjpegturbo.turbojpeg.<a href="TJCustomFilter.html" title="interface in org.libjpegturbo.turbojpeg"><span class="typeNameLink">TJCustomFilter</span></a></li>
</ul> </ul>
</section>
</div> </div>
</main>
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== --> <!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom"> <div class="bottomNav"><a id="navbar.bottom">
<!-- --> <!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow"> </a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- --> <!-- -->
</a> </a>
<ul class="navList" title="Navigation"> <ul class="navList" title="Navigation">
<li><a href="../../../org/libjpegturbo/turbojpeg/package-summary.html">Package</a></li> <li><a href="package-summary.html">Package</a></li>
<li>Class</li> <li>Class</li>
<li class="navBarCell1Rev">Tree</li> <li class="navBarCell1Rev">Tree</li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li> <li><a href="../../../deprecated-list.html">Deprecated</a></li>
@@ -129,16 +167,8 @@
</ul> </ul>
</div> </div>
<div class="subNav"> <div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?org/libjpegturbo/turbojpeg/package-tree.html" target="_top">Frames</a></li>
<li><a href="package-tree.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom"> <ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All Classes</a></li> <li><a href="../../../allclasses.html">All&nbsp;Classes</a></li>
</ul> </ul>
<div> <div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -151,10 +181,15 @@
} }
//--> //-->
</script> </script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div> </div>
<a name="skip-navbar_bottom"> <a id="skip.navbar.bottom">
<!-- --> <!-- -->
</a></div> </a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= --> <!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body> </body>
</html> </html>

View File

@@ -1,9 +1,21 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!DOCTYPE HTML>
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc -->
<title>Class Hierarchy</title> <title>Class Hierarchy</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="jquery/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="jquery/jquery-ui.min.js"></script>
</head> </head>
<body> <body>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -15,18 +27,25 @@
catch(err) { catch(err) {
} }
//--> //-->
</script> var pathtoroot = "./";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript> <noscript>
<div>JavaScript is disabled on your browser.</div> <div>JavaScript is disabled on your browser.</div>
</noscript> </noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= --> <!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top"> <div class="topNav"><a id="navbar.top">
<!-- --> <!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow"> </a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- --> <!-- -->
</a> </a>
<ul class="navList" title="Navigation"> <ul class="navList" title="Navigation">
<li><a href="org/libjpegturbo/turbojpeg/package-summary.html">Package</a></li> <li>Package</li>
<li>Class</li> <li>Class</li>
<li class="navBarCell1Rev">Tree</li> <li class="navBarCell1Rev">Tree</li>
<li><a href="deprecated-list.html">Deprecated</a></li> <li><a href="deprecated-list.html">Deprecated</a></li>
@@ -35,16 +54,14 @@
</ul> </ul>
</div> </div>
<div class="subNav"> <div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?overview-tree.html" target="_top">Frames</a></li>
<li><a href="overview-tree.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top"> <ul class="navList" id="allclasses_navbar_top">
<li><a href="allclasses-noframe.html">All Classes</a></li> <li><a href="allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul> </ul>
<div> <div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -57,74 +74,95 @@
} }
//--> //-->
</script> </script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div> </div>
<a name="skip-navbar_top"> <a id="skip.navbar.top">
<!-- --> <!-- -->
</a></div> </a></div>
<!-- ========= END OF TOP NAVBAR ========= --> <!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<main role="main">
<div class="header"> <div class="header">
<h1 class="title">Hierarchy For All Packages</h1> <h1 class="title">Hierarchy For All Packages</h1>
<span class="strong">Package Hierarchies:</span> <span class="packageHierarchyLabel">Package Hierarchies:</span>
<ul class="horizontal"> <ul class="horizontal">
<li><a href="org/libjpegturbo/turbojpeg/package-tree.html">org.libjpegturbo.turbojpeg</a></li> <li><a href="org/libjpegturbo/turbojpeg/package-tree.html">org.libjpegturbo.turbojpeg</a></li>
</ul> </ul>
</div> </div>
<div class="contentContainer"> <div class="contentContainer">
<section>
<h2 title="Class Hierarchy">Class Hierarchy</h2> <h2 title="Class Hierarchy">Class Hierarchy</h2>
<ul> <ul>
<li type="circle">java.lang.Object <li class="circle">java.lang.Object
<ul> <ul>
<li type="circle">java.awt.geom.RectangularShape (implements java.lang.Cloneable, java.awt.Shape) <li class="circle">java.awt.geom.RectangularShape (implements java.lang.Cloneable, java.awt.Shape)
<ul> <ul>
<li type="circle">java.awt.geom.Rectangle2D <li class="circle">java.awt.geom.Rectangle2D
<ul> <ul>
<li type="circle">java.awt.Rectangle (implements java.io.Serializable, java.awt.Shape) <li class="circle">java.awt.Rectangle (implements java.io.Serializable, java.awt.Shape)
<ul> <ul>
<li type="circle">org.libjpegturbo.turbojpeg.<a href="org/libjpegturbo/turbojpeg/TJTransform.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">TJTransform</span></a></li> <li class="circle">org.libjpegturbo.turbojpeg.<a href="org/libjpegturbo/turbojpeg/TJTransform.html" title="class in org.libjpegturbo.turbojpeg"><span class="typeNameLink">TJTransform</span></a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
</li> </li>
</ul> </ul>
</li> </li>
<li type="circle">java.lang.Throwable (implements java.io.Serializable) <li class="circle">java.lang.Throwable (implements java.io.Serializable)
<ul> <ul>
<li type="circle">java.lang.Exception <li class="circle">java.lang.Exception
<ul> <ul>
<li type="circle">java.io.IOException <li class="circle">java.io.IOException
<ul> <ul>
<li type="circle">org.libjpegturbo.turbojpeg.<a href="org/libjpegturbo/turbojpeg/TJException.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">TJException</span></a></li> <li class="circle">org.libjpegturbo.turbojpeg.<a href="org/libjpegturbo/turbojpeg/TJException.html" title="class in org.libjpegturbo.turbojpeg"><span class="typeNameLink">TJException</span></a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
</li> </li>
</ul> </ul>
</li> </li>
<li type="circle">org.libjpegturbo.turbojpeg.<a href="org/libjpegturbo/turbojpeg/TJ.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">TJ</span></a></li> <li class="circle">org.libjpegturbo.turbojpeg.<a href="org/libjpegturbo/turbojpeg/TJ.html" title="class in org.libjpegturbo.turbojpeg"><span class="typeNameLink">TJ</span></a></li>
<li type="circle">org.libjpegturbo.turbojpeg.<a href="org/libjpegturbo/turbojpeg/TJCompressor.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">TJCompressor</span></a> (implements java.io.Closeable)</li> <li class="circle">org.libjpegturbo.turbojpeg.<a href="org/libjpegturbo/turbojpeg/TJCompressor.html" title="class in org.libjpegturbo.turbojpeg"><span class="typeNameLink">TJCompressor</span></a> (implements java.io.Closeable)</li>
<li type="circle">org.libjpegturbo.turbojpeg.<a href="org/libjpegturbo/turbojpeg/TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">TJDecompressor</span></a> (implements java.io.Closeable) <li class="circle">org.libjpegturbo.turbojpeg.<a href="org/libjpegturbo/turbojpeg/TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg"><span class="typeNameLink">TJDecompressor</span></a> (implements java.io.Closeable)
<ul> <ul>
<li type="circle">org.libjpegturbo.turbojpeg.<a href="org/libjpegturbo/turbojpeg/TJTransformer.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">TJTransformer</span></a></li> <li class="circle">org.libjpegturbo.turbojpeg.<a href="org/libjpegturbo/turbojpeg/TJTransformer.html" title="class in org.libjpegturbo.turbojpeg"><span class="typeNameLink">TJTransformer</span></a></li>
</ul> </ul>
</li> </li>
<li type="circle">org.libjpegturbo.turbojpeg.<a href="org/libjpegturbo/turbojpeg/TJScalingFactor.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">TJScalingFactor</span></a></li> <li class="circle">org.libjpegturbo.turbojpeg.<a href="org/libjpegturbo/turbojpeg/TJScalingFactor.html" title="class in org.libjpegturbo.turbojpeg"><span class="typeNameLink">TJScalingFactor</span></a></li>
<li type="circle">org.libjpegturbo.turbojpeg.<a href="org/libjpegturbo/turbojpeg/YUVImage.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">YUVImage</span></a></li> <li class="circle">org.libjpegturbo.turbojpeg.<a href="org/libjpegturbo/turbojpeg/YUVImage.html" title="class in org.libjpegturbo.turbojpeg"><span class="typeNameLink">YUVImage</span></a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
</section>
<section>
<h2 title="Interface Hierarchy">Interface Hierarchy</h2> <h2 title="Interface Hierarchy">Interface Hierarchy</h2>
<ul> <ul>
<li type="circle">org.libjpegturbo.turbojpeg.<a href="org/libjpegturbo/turbojpeg/TJCustomFilter.html" title="interface in org.libjpegturbo.turbojpeg"><span class="strong">TJCustomFilter</span></a></li> <li class="circle">org.libjpegturbo.turbojpeg.<a href="org/libjpegturbo/turbojpeg/TJCustomFilter.html" title="interface in org.libjpegturbo.turbojpeg"><span class="typeNameLink">TJCustomFilter</span></a></li>
</ul> </ul>
</section>
</div> </div>
</main>
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== --> <!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom"> <div class="bottomNav"><a id="navbar.bottom">
<!-- --> <!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow"> </a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- --> <!-- -->
</a> </a>
<ul class="navList" title="Navigation"> <ul class="navList" title="Navigation">
<li><a href="org/libjpegturbo/turbojpeg/package-summary.html">Package</a></li> <li>Package</li>
<li>Class</li> <li>Class</li>
<li class="navBarCell1Rev">Tree</li> <li class="navBarCell1Rev">Tree</li>
<li><a href="deprecated-list.html">Deprecated</a></li> <li><a href="deprecated-list.html">Deprecated</a></li>
@@ -133,16 +171,8 @@
</ul> </ul>
</div> </div>
<div class="subNav"> <div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?overview-tree.html" target="_top">Frames</a></li>
<li><a href="overview-tree.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom"> <ul class="navList" id="allclasses_navbar_bottom">
<li><a href="allclasses-noframe.html">All Classes</a></li> <li><a href="allclasses.html">All&nbsp;Classes</a></li>
</ul> </ul>
<div> <div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -155,10 +185,15 @@
} }
//--> //-->
</script> </script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div> </div>
<a name="skip-navbar_bottom"> <a id="skip.navbar.bottom">
<!-- --> <!-- -->
</a></div> </a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= --> <!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body> </body>
</html> </html>

View File

@@ -0,0 +1 @@
packageSearchIndex = [{"l":"All Packages","url":"allpackages-index.html"},{"l":"org.libjpegturbo.turbojpeg"}]

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 499 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 291 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 849 B

BIN
java/doc/resources/x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 394 B

View File

@@ -1,9 +1,124 @@
function show(type) /*
{ * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
var moduleSearchIndex;
var packageSearchIndex;
var typeSearchIndex;
var memberSearchIndex;
var tagSearchIndex;
function loadScripts(doc, tag) {
createElem(doc, tag, 'jquery/jszip/dist/jszip.js');
createElem(doc, tag, 'jquery/jszip-utils/dist/jszip-utils.js');
if (window.navigator.userAgent.indexOf('MSIE ') > 0 || window.navigator.userAgent.indexOf('Trident/') > 0 ||
window.navigator.userAgent.indexOf('Edge/') > 0) {
createElem(doc, tag, 'jquery/jszip-utils/dist/jszip-utils-ie.js');
}
createElem(doc, tag, 'search.js');
$.get(pathtoroot + "module-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "module-search-index.zip", function(e, data) {
JSZip.loadAsync(data).then(function(zip){
zip.file("module-search-index.json").async("text").then(function(content){
moduleSearchIndex = JSON.parse(content);
});
});
});
});
$.get(pathtoroot + "package-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "package-search-index.zip", function(e, data) {
JSZip.loadAsync(data).then(function(zip){
zip.file("package-search-index.json").async("text").then(function(content){
packageSearchIndex = JSON.parse(content);
});
});
});
});
$.get(pathtoroot + "type-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "type-search-index.zip", function(e, data) {
JSZip.loadAsync(data).then(function(zip){
zip.file("type-search-index.json").async("text").then(function(content){
typeSearchIndex = JSON.parse(content);
});
});
});
});
$.get(pathtoroot + "member-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "member-search-index.zip", function(e, data) {
JSZip.loadAsync(data).then(function(zip){
zip.file("member-search-index.json").async("text").then(function(content){
memberSearchIndex = JSON.parse(content);
});
});
});
});
$.get(pathtoroot + "tag-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "tag-search-index.zip", function(e, data) {
JSZip.loadAsync(data).then(function(zip){
zip.file("tag-search-index.json").async("text").then(function(content){
tagSearchIndex = JSON.parse(content);
});
});
});
});
if (!moduleSearchIndex) {
createElem(doc, tag, 'module-search-index.js');
}
if (!packageSearchIndex) {
createElem(doc, tag, 'package-search-index.js');
}
if (!typeSearchIndex) {
createElem(doc, tag, 'type-search-index.js');
}
if (!memberSearchIndex) {
createElem(doc, tag, 'member-search-index.js');
}
if (!tagSearchIndex) {
createElem(doc, tag, 'tag-search-index.js');
}
$(window).resize(function() {
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
});
}
function createElem(doc, tag, path) {
var script = doc.createElement(tag);
var scriptElement = doc.getElementsByTagName(tag)[0];
script.src = pathtoroot + path;
scriptElement.parentNode.insertBefore(script, scriptElement);
}
function show(type) {
count = 0; count = 0;
for (var key in methods) { for (var key in data) {
var row = document.getElementById(key); var row = document.getElementById(key);
if ((methods[key] & type) != 0) { if ((data[key] & type) !== 0) {
row.style.display = ''; row.style.display = '';
row.className = (count++ % 2) ? rowColor : altColor; row.className = (count++ % 2) ? rowColor : altColor;
} }
@@ -13,8 +128,7 @@ function show(type)
updateTabs(type); updateTabs(type);
} }
function updateTabs(type) function updateTabs(type) {
{
for (var value in tabs) { for (var value in tabs) {
var sNode = document.getElementById(tabs[value][0]); var sNode = document.getElementById(tabs[value][0]);
var spanNode = sNode.firstChild; var spanNode = sNode.firstChild;
@@ -28,3 +142,8 @@ function updateTabs(type)
} }
} }
} }
function updateModuleFrame(pFrame, cFrame) {
top.packageFrame.location = pFrame;
top.classFrame.location = cFrame;
}

326
java/doc/search.js Normal file
View File

@@ -0,0 +1,326 @@
/*
* Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
var noResult = {l: "No results found"};
var catModules = "Modules";
var catPackages = "Packages";
var catTypes = "Types";
var catMembers = "Members";
var catSearchTags = "SearchTags";
var highlight = "<span class=\"resultHighlight\">$&</span>";
var camelCaseRegexp = "";
var secondaryMatcher = "";
function getHighlightedText(item) {
var ccMatcher = new RegExp(camelCaseRegexp);
var label = item.replace(ccMatcher, highlight);
if (label === item) {
label = item.replace(secondaryMatcher, highlight);
}
return label;
}
function getURLPrefix(ui) {
var urlPrefix="";
if (useModuleDirectories) {
var slash = "/";
if (ui.item.category === catModules) {
return ui.item.l + slash;
} else if (ui.item.category === catPackages && ui.item.m) {
return ui.item.m + slash;
} else if ((ui.item.category === catTypes && ui.item.p) || ui.item.category === catMembers) {
$.each(packageSearchIndex, function(index, item) {
if (item.m && ui.item.p == item.l) {
urlPrefix = item.m + slash;
}
});
return urlPrefix;
} else {
return urlPrefix;
}
}
return urlPrefix;
}
var watermark = 'Search';
$(function() {
$("#search").val('');
$("#search").prop("disabled", false);
$("#reset").prop("disabled", false);
$("#search").val(watermark).addClass('watermark');
$("#search").blur(function() {
if ($(this).val().length == 0) {
$(this).val(watermark).addClass('watermark');
}
});
$("#search").on('click keydown', function() {
if ($(this).val() == watermark) {
$(this).val('').removeClass('watermark');
}
});
$("#reset").click(function() {
$("#search").val('');
$("#search").focus();
});
$("#search").focus();
$("#search")[0].setSelectionRange(0, 0);
});
$.widget("custom.catcomplete", $.ui.autocomplete, {
_create: function() {
this._super();
this.widget().menu("option", "items", "> :not(.ui-autocomplete-category)");
},
_renderMenu: function(ul, items) {
var rMenu = this,
currentCategory = "";
rMenu.menu.bindings = $();
$.each(items, function(index, item) {
var li;
if (item.l !== noResult.l && item.category !== currentCategory) {
ul.append("<li class=\"ui-autocomplete-category\">" + item.category + "</li>");
currentCategory = item.category;
}
li = rMenu._renderItemData(ul, item);
if (item.category) {
li.attr("aria-label", item.category + " : " + item.l);
li.attr("class", "resultItem");
} else {
li.attr("aria-label", item.l);
li.attr("class", "resultItem");
}
});
},
_renderItem: function(ul, item) {
var label = "";
if (item.category === catModules) {
label = getHighlightedText(item.l);
} else if (item.category === catPackages) {
label = (item.m)
? getHighlightedText(item.m + "/" + item.l)
: getHighlightedText(item.l);
} else if (item.category === catTypes) {
label = (item.p)
? getHighlightedText(item.p + "." + item.l)
: getHighlightedText(item.l);
} else if (item.category === catMembers) {
label = getHighlightedText(item.p + "." + (item.c + "." + item.l));
} else if (item.category === catSearchTags) {
label = getHighlightedText(item.l);
} else {
label = item.l;
}
var li = $("<li/>").appendTo(ul);
var div = $("<div/>").appendTo(li);
if (item.category === catSearchTags) {
if (item.d) {
div.html(label + "<span class=\"searchTagHolderResult\"> (" + item.h + ")</span><br><span class=\"searchTagDescResult\">"
+ item.d + "</span><br>");
} else {
div.html(label + "<span class=\"searchTagHolderResult\"> (" + item.h + ")</span>");
}
} else {
div.html(label);
}
return li;
}
});
$(function() {
$("#search").catcomplete({
minLength: 1,
delay: 100,
source: function(request, response) {
var result = new Array();
var presult = new Array();
var tresult = new Array();
var mresult = new Array();
var tgresult = new Array();
var secondaryresult = new Array();
var displayCount = 0;
var exactMatcher = new RegExp("^" + $.ui.autocomplete.escapeRegex(request.term) + "$", "i");
camelCaseRegexp = ($.ui.autocomplete.escapeRegex(request.term)).split(/(?=[A-Z])/).join("([a-z0-9_$]*?)");
var camelCaseMatcher = new RegExp("^" + camelCaseRegexp);
secondaryMatcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i");
// Return the nested innermost name from the specified object
function nestedName(e) {
return e.l.substring(e.l.lastIndexOf(".") + 1);
}
function concatResults(a1, a2) {
a1 = a1.concat(a2);
a2.length = 0;
return a1;
}
if (moduleSearchIndex) {
var mdleCount = 0;
$.each(moduleSearchIndex, function(index, item) {
item.category = catModules;
if (exactMatcher.test(item.l)) {
result.push(item);
mdleCount++;
} else if (camelCaseMatcher.test(item.l)) {
result.push(item);
} else if (secondaryMatcher.test(item.l)) {
secondaryresult.push(item);
}
});
displayCount = mdleCount;
result = concatResults(result, secondaryresult);
}
if (packageSearchIndex) {
var pCount = 0;
var pkg = "";
$.each(packageSearchIndex, function(index, item) {
item.category = catPackages;
pkg = (item.m)
? (item.m + "/" + item.l)
: item.l;
if (exactMatcher.test(item.l)) {
presult.push(item);
pCount++;
} else if (camelCaseMatcher.test(pkg)) {
presult.push(item);
} else if (secondaryMatcher.test(pkg)) {
secondaryresult.push(item);
}
});
result = result.concat(concatResults(presult, secondaryresult));
displayCount = (pCount > displayCount) ? pCount : displayCount;
}
if (typeSearchIndex) {
var tCount = 0;
$.each(typeSearchIndex, function(index, item) {
item.category = catTypes;
var s = nestedName(item);
if (exactMatcher.test(s)) {
tresult.push(item);
tCount++;
} else if (camelCaseMatcher.test(s)) {
tresult.push(item);
} else if (secondaryMatcher.test(item.p + "." + item.l)) {
secondaryresult.push(item);
}
});
result = result.concat(concatResults(tresult, secondaryresult));
displayCount = (tCount > displayCount) ? tCount : displayCount;
}
if (memberSearchIndex) {
var mCount = 0;
$.each(memberSearchIndex, function(index, item) {
item.category = catMembers;
var s = nestedName(item);
if (exactMatcher.test(s)) {
mresult.push(item);
mCount++;
} else if (camelCaseMatcher.test(s)) {
mresult.push(item);
} else if (secondaryMatcher.test(item.c + "." + item.l)) {
secondaryresult.push(item);
}
});
result = result.concat(concatResults(mresult, secondaryresult));
displayCount = (mCount > displayCount) ? mCount : displayCount;
}
if (tagSearchIndex) {
var tgCount = 0;
$.each(tagSearchIndex, function(index, item) {
item.category = catSearchTags;
if (exactMatcher.test(item.l)) {
tgresult.push(item);
tgCount++;
} else if (secondaryMatcher.test(item.l)) {
secondaryresult.push(item);
}
});
result = result.concat(concatResults(tgresult, secondaryresult));
displayCount = (tgCount > displayCount) ? tgCount : displayCount;
}
displayCount = (displayCount > 500) ? displayCount : 500;
var counter = function() {
var count = {Modules: 0, Packages: 0, Types: 0, Members: 0, SearchTags: 0};
var f = function(item) {
count[item.category] += 1;
return (count[item.category] <= displayCount);
};
return f;
}();
response(result.filter(counter));
},
response: function(event, ui) {
if (!ui.content.length) {
ui.content.push(noResult);
} else {
$("#search").empty();
}
},
autoFocus: true,
position: {
collision: "flip"
},
select: function(event, ui) {
if (ui.item.l !== noResult.l) {
var url = getURLPrefix(ui);
if (ui.item.category === catModules) {
if (useModuleDirectories) {
url += "module-summary.html";
} else {
url = ui.item.l + "-summary.html";
}
} else if (ui.item.category === catPackages) {
if (ui.item.url) {
url = ui.item.url;
} else {
url += ui.item.l.replace(/\./g, '/') + "/package-summary.html";
}
} else if (ui.item.category === catTypes) {
if (ui.item.url) {
url = ui.item.url;
} else if (ui.item.p === "<Unnamed>") {
url += ui.item.l + ".html";
} else {
url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.l + ".html";
}
} else if (ui.item.category === catMembers) {
if (ui.item.p === "<Unnamed>") {
url += ui.item.c + ".html" + "#";
} else {
url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.c + ".html" + "#";
}
if (ui.item.url) {
url += ui.item.url;
} else {
url += ui.item.l;
}
} else if (ui.item.category === catSearchTags) {
url += ui.item.u;
}
if (top !== window) {
parent.classFrame.location = pathtoroot + url;
} else {
window.location.href = pathtoroot + url;
}
$("#search").focus();
}
}
});
});

View File

@@ -1,9 +1,21 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!DOCTYPE HTML>
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc -->
<title>Serialized Form</title> <title>Serialized Form</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="jquery/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="jquery/jquery-ui.min.js"></script>
</head> </head>
<body> <body>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -15,14 +27,21 @@
catch(err) { catch(err) {
} }
//--> //-->
</script> var pathtoroot = "./";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript> <noscript>
<div>JavaScript is disabled on your browser.</div> <div>JavaScript is disabled on your browser.</div>
</noscript> </noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= --> <!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top"> <div class="topNav"><a id="navbar.top">
<!-- --> <!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow"> </a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- --> <!-- -->
</a> </a>
<ul class="navList" title="Navigation"> <ul class="navList" title="Navigation">
@@ -35,16 +54,14 @@
</ul> </ul>
</div> </div>
<div class="subNav"> <div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?serialized-form.html" target="_top">Frames</a></li>
<li><a href="serialized-form.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top"> <ul class="navList" id="allclasses_navbar_top">
<li><a href="allclasses-noframe.html">All Classes</a></li> <li><a href="allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul> </ul>
<div> <div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -57,20 +74,33 @@
} }
//--> //-->
</script> </script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div> </div>
<a name="skip-navbar_top"> <a id="skip.navbar.top">
<!-- --> <!-- -->
</a></div> </a></div>
<!-- ========= END OF TOP NAVBAR ========= --> <!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<main role="main">
<div class="header"> <div class="header">
<h1 title="Serialized Form" class="title">Serialized Form</h1> <h1 title="Serialized Form" class="title">Serialized Form</h1>
</div> </div>
<div class="serializedFormContainer"> <div class="serializedFormContainer">
<ul class="blockList"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<section>
<h2 title="Package">Package&nbsp;org.libjpegturbo.turbojpeg</h2> <h2 title="Package">Package&nbsp;org.libjpegturbo.turbojpeg</h2>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"><a name="org.libjpegturbo.turbojpeg.TJException"> <li class="blockList"><a id="org.libjpegturbo.turbojpeg.TJException">
<!-- --> <!-- -->
</a> </a>
<h3>Class <a href="org/libjpegturbo/turbojpeg/TJException.html" title="class in org.libjpegturbo.turbojpeg">org.libjpegturbo.turbojpeg.TJException</a> extends java.io.IOException implements Serializable</h3> <h3>Class <a href="org/libjpegturbo/turbojpeg/TJException.html" title="class in org.libjpegturbo.turbojpeg">org.libjpegturbo.turbojpeg.TJException</a> extends java.io.IOException implements Serializable</h3>
@@ -79,9 +109,7 @@
<dd>1L</dd> <dd>1L</dd>
</dl> </dl>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"><a name="serializedForm"> <li class="blockList">
<!-- -->
</a>
<h3>Serialized Fields</h3> <h3>Serialized Fields</h3>
<ul class="blockList"> <ul class="blockList">
<li class="blockListLast"> <li class="blockListLast">
@@ -92,7 +120,7 @@
</li> </li>
</ul> </ul>
</li> </li>
<li class="blockList"><a name="org.libjpegturbo.turbojpeg.TJTransform"> <li class="blockList"><a id="org.libjpegturbo.turbojpeg.TJTransform">
<!-- --> <!-- -->
</a> </a>
<h3>Class <a href="org/libjpegturbo/turbojpeg/TJTransform.html" title="class in org.libjpegturbo.turbojpeg">org.libjpegturbo.turbojpeg.TJTransform</a> extends java.awt.Rectangle implements Serializable</h3> <h3>Class <a href="org/libjpegturbo/turbojpeg/TJTransform.html" title="class in org.libjpegturbo.turbojpeg">org.libjpegturbo.turbojpeg.TJTransform</a> extends java.awt.Rectangle implements Serializable</h3>
@@ -101,39 +129,43 @@
<dd>-127367705761430371L</dd> <dd>-127367705761430371L</dd>
</dl> </dl>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"><a name="serializedForm"> <li class="blockList">
<!-- -->
</a>
<h3>Serialized Fields</h3> <h3>Serialized Fields</h3>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<h4>cf</h4>
<pre><a href="org/libjpegturbo/turbojpeg/TJCustomFilter.html" title="interface in org.libjpegturbo.turbojpeg">TJCustomFilter</a> cf</pre>
<div class="block">Custom filter instance</div>
</li>
<li class="blockList">
<h4>op</h4> <h4>op</h4>
<pre>int op</pre> <pre>int op</pre>
<div class="block">Transform operation (one of <a href="org/libjpegturbo/turbojpeg/TJTransform.html#OP_NONE"><code>OP_*</code></a>)</div> <div class="block">Transform operation (one of <a href="org/libjpegturbo/turbojpeg/TJTransform.html#OP_NONE"><code>OP_*</code></a>)</div>
</li> </li>
<li class="blockList"> <li class="blockListLast">
<h4>options</h4> <h4>options</h4>
<pre>int options</pre> <pre>int options</pre>
<div class="block">Transform options (bitwise OR of one or more of <div class="block">Transform options (bitwise OR of one or more of
<a href="org/libjpegturbo/turbojpeg/TJTransform.html#OPT_PERFECT"><code>OPT_*</code></a>)</div> <a href="org/libjpegturbo/turbojpeg/TJTransform.html#OPT_PERFECT"><code>OPT_*</code></a>)</div>
</li> </li>
<li class="blockListLast">
<h4>cf</h4>
<pre><a href="org/libjpegturbo/turbojpeg/TJCustomFilter.html" title="interface in org.libjpegturbo.turbojpeg">TJCustomFilter</a> cf</pre>
<div class="block">Custom filter instance</div>
</li>
</ul> </ul>
</li> </li>
</ul> </ul>
</li> </li>
</ul> </ul>
</section>
</li> </li>
</ul> </ul>
</div> </div>
</main>
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== --> <!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom"> <div class="bottomNav"><a id="navbar.bottom">
<!-- --> <!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow"> </a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- --> <!-- -->
</a> </a>
<ul class="navList" title="Navigation"> <ul class="navList" title="Navigation">
@@ -146,16 +178,8 @@
</ul> </ul>
</div> </div>
<div class="subNav"> <div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?serialized-form.html" target="_top">Frames</a></li>
<li><a href="serialized-form.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom"> <ul class="navList" id="allclasses_navbar_bottom">
<li><a href="allclasses-noframe.html">All Classes</a></li> <li><a href="allclasses.html">All&nbsp;Classes</a></li>
</ul> </ul>
<div> <div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--
@@ -168,10 +192,15 @@
} }
//--> //-->
</script> </script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div> </div>
<a name="skip-navbar_bottom"> <a id="skip.navbar.bottom">
<!-- --> <!-- -->
</a></div> </a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= --> <!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body> </body>
</html> </html>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
typeSearchIndex = [{"l":"All Classes","url":"allclasses-index.html"},{"p":"org.libjpegturbo.turbojpeg","l":"TJ"},{"p":"org.libjpegturbo.turbojpeg","l":"TJCompressor"},{"p":"org.libjpegturbo.turbojpeg","l":"TJCustomFilter"},{"p":"org.libjpegturbo.turbojpeg","l":"TJDecompressor"},{"p":"org.libjpegturbo.turbojpeg","l":"TJException"},{"p":"org.libjpegturbo.turbojpeg","l":"TJScalingFactor"},{"p":"org.libjpegturbo.turbojpeg","l":"TJTransform"},{"p":"org.libjpegturbo.turbojpeg","l":"TJTransformer"},{"p":"org.libjpegturbo.turbojpeg","l":"YUVImage"}]

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More