āĻ‡āĻŽā§‡āĻœ āĻĄāĻŋāĻ•ā§‹āĻĄāĻŋāĻ‚ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ SAIL 0.9.0-pre12 āĻ°āĻŋāĻ˛āĻŋāĻœ

SAIL āĻ‡āĻŽā§‡āĻœ āĻĄāĻŋāĻ•ā§‹āĻĄāĻŋāĻ‚ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋāĻ° āĻŦā§‡āĻļ āĻ•āĻŋāĻ›ā§ āĻŦāĻĄāĻŧ āĻ†āĻĒāĻĄā§‡āĻŸ āĻĒā§āĻ°āĻ•āĻžāĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯āĻž āĻĻā§€āĻ°ā§āĻ˜-āĻŦāĻŋāĻ˛ā§āĻĒā§āĻ¤ KSquirrel āĻ‡āĻŽā§‡āĻœ āĻ­āĻŋāĻ‰āĻ¯āĻŧāĻžāĻ° āĻĨā§‡āĻ•ā§‡ āĻ•ā§‹āĻĄā§‡āĻ•āĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋ C āĻĒā§āĻ¨āĻ°ā§āĻ˛āĻŋāĻ–āĻ¨ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ•āĻŸāĻŋ āĻ‰āĻšā§āĻš-āĻ¸ā§āĻ¤āĻ°ā§‡āĻ° āĻŦāĻŋāĻŽā§‚āĻ°ā§āĻ¤ API āĻāĻŦāĻ‚ āĻ…āĻ¨ā§‡āĻ• āĻ‰āĻ¨ā§āĻ¨āĻ¤āĻŋ āĻ¸āĻšāĨ¤ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ–āĻ¨āĻ“ āĻ•ā§āĻ°āĻŽāĻžāĻ—āĻ¤ āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡āĨ¤ āĻŦāĻžāĻ‡āĻ¨āĻžāĻ°āĻŋ āĻāĻŦāĻ‚ API āĻ¸āĻžāĻŽāĻžā§āĻœāĻ¸ā§āĻ¯ āĻāĻ–āĻ¨āĻ“ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž. āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨.

SAIL āĻāĻ° āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯

  • āĻĻā§āĻ°ā§āĻ¤ āĻāĻŦāĻ‚ āĻ¸āĻšāĻœā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ¯ā§‹āĻ—ā§āĻ¯ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ;
  • C11-āĻ C++17 āĻŦāĻžāĻ‡āĻ¨ā§āĻĄāĻŋāĻ‚ āĻ¸āĻš āĻ˛ā§‡āĻ–āĻž;
  • āĻ‡āĻŽā§‡āĻœ āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻŸā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ—āĻ¤āĻŋāĻļā§€āĻ˛āĻ­āĻžāĻŦā§‡ āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻž āĻ•ā§‹āĻĄā§‡āĻ• āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯āĻž āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻ¸āĻžāĻ‡āĻĄ āĻĨā§‡āĻ•ā§‡ āĻ¸ā§āĻŦāĻžāĻ§ā§€āĻ¨āĻ­āĻžāĻŦā§‡ āĻ¸āĻ°āĻžāĻ¨ā§‹ āĻāĻŦāĻ‚ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡;
  • āĻĢāĻžāĻ‡āĻ˛, āĻŽā§‡āĻŽāĻ°āĻŋ, āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻ‰āĻ¤ā§āĻ¸ āĻĨā§‡āĻ•ā§‡ āĻĒāĻĄāĻŧāĻž;
  • āĻŽāĻžāĻ˛ā§āĻŸāĻŋ-āĻĒā§ƒāĻˇā§āĻ āĻž āĻāĻŦāĻ‚ āĻ…ā§āĻ¯āĻžāĻ¨āĻŋāĻŽā§‡āĻŸā§‡āĻĄ āĻ‡āĻŽā§‡āĻœ āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨;
  • āĻœāĻ¨āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻŸā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ–āĻ¨āĻ“ āĻ¸āĻ‚āĻļā§āĻ˛āĻŋāĻˇā§āĻŸ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ libjpeg, libpng, āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
  • āĻ•ā§āĻ°āĻ¸-āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽ: āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸, āĻ‰āĻ‡āĻ¨ā§āĻĄā§‹āĻœ, āĻŽā§āĻ¯āĻžāĻ•ā§‹āĻ¸;
  • "āĻĒā§āĻ°ā§‹āĻŦāĻŋāĻ‚" - āĻĄāĻŋāĻ•ā§‹āĻĄāĻŋāĻ‚ āĻĒāĻŋāĻ•ā§āĻ¸ā§‡āĻ˛ āĻ›āĻžāĻĄāĻŧāĻžāĻ‡ āĻāĻ•āĻŸāĻŋ āĻšāĻŋāĻ¤ā§āĻ° āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ¤āĻĨā§āĻ¯ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻ•āĻ°āĻž;
  • āĻŽāĻžāĻ¨āĻŦ āĻ¸āĻ¤ā§āĻ¤āĻžāĻ° āĻ¨āĻžāĻŽ (āĻ•ā§‹āĻ¨ āĻĢāĻŋāĻŽā§āĻ˛āĻŸāĻŋāĻŦāĻŋāĻŸāĻŽā§āĻ¯āĻžāĻĒ āĻ¨ā§‡āĻ‡);
  • āĻ†āĻ‡āĻ¸āĻŋāĻ¸āĻŋ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛ āĻĒāĻĄāĻŧā§āĻ¨ āĻāĻŦāĻ‚ āĻ˛āĻŋāĻ–ā§āĻ¨;
  • RGBA āĻŦāĻž BGRA āĻĒāĻŋāĻ•ā§āĻ¸ā§‡āĻ˛ āĻĒāĻžāĻ āĻžāĻ¯āĻŧ;
  • āĻ•ā§‹āĻĄā§‡āĻ• āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸āĻŽāĻ°ā§āĻĨāĻŋāĻ¤ āĻšāĻ˛ā§‡ āĻ†āĻ¸āĻ˛ āĻĒāĻŋāĻ•ā§āĻ¸ā§‡āĻ˛ (āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, CMYK) āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡;

āĻļā§‡āĻˇ āĻĒā§āĻ°āĻ•āĻžāĻļā§‡āĻ° āĻĒāĻ° āĻĨā§‡āĻ•ā§‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§‡āĻ° āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž:

  • API āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–āĻ¯ā§‹āĻ—ā§āĻ¯āĻ­āĻžāĻŦā§‡ āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻāĻŦāĻ‚ āĻ¸āĻ°āĻ˛ā§€āĻ•ā§ƒāĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ›āĻŋāĻ˛: struct sail_context *context; SAIL_TRY(sail_init(&context)); struct sail_image *āĻšāĻŋāĻ¤ā§āĻ°; āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ°āĻŦāĻŋāĻšā§€āĻ¨ āĻšāĻ° *āĻ›āĻŦāĻŋ_āĻĒāĻŋāĻ•ā§āĻ¸ā§‡āĻ˛; SAIL_TRY(sail_read(āĻĒāĻĨ, āĻĒā§āĻ°āĻ¸āĻ™ā§āĻ—, &āĻ‡āĻŽā§‡āĻœ, (void **)&image_pixels)); ... āĻŦāĻŋāĻ¨āĻžāĻŽā§‚āĻ˛ā§āĻ¯ā§‡ (āĻ›āĻŦāĻŋ_āĻĒāĻŋāĻ•ā§āĻ¸ā§‡āĻ˛); sail_destroy_image(āĻ›āĻŦāĻŋ);

    āĻāĻ–āĻ¨: struct sail_image *image; SAIL_TRY(sail_read_file(path, &image); ... sail_destroy_image(image);

  • BMP, GIF, TIFF āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻŸ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡;
  • UWP āĻ›āĻžāĻĄāĻŧāĻž āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽā§‡ VCPKG-āĻ¤ā§‡ āĻ‰āĻĒāĻ˛āĻŦā§āĻ§āĻ¤āĻž;
  • āĻŦā§‡āĻžā§āĻšāĻŽāĻžāĻ°ā§āĻ• āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻĒā§āĻ°āĻ•āĻžāĻļāĻŋāĻ¤;
  • C++ āĻŦāĻžāĻ‡āĻ¨ā§āĻĄāĻŋāĻ‚ C++17 āĻ āĻ¸āĻ°āĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡;
  • āĻŽā§‡āĻŽāĻ°āĻŋ āĻŦāĻ°āĻžāĻĻā§āĻĻāĻ•āĻ°āĻŖ āĻĢāĻžāĻ‚āĻļāĻ¨āĻ—ā§āĻ˛āĻŋ āĻāĻ• āĻœāĻžāĻ¯āĻŧāĻ—āĻžāĻ¯āĻŧ āĻ¸āĻ‚āĻ—ā§āĻ°āĻš āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¯āĻžāĻ¤ā§‡ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋ āĻ¸āĻšāĻœā§‡āĻ‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻœā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ, āĻ¤āĻŦā§‡ āĻāĻ‡ āĻŽā§āĻšā§āĻ°ā§āĻ¤ā§‡ āĻāĻŸāĻŋ āĻ•ā§‡āĻŦāĻ˛ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ¸āĻ‚āĻ•āĻ˛āĻ¨ āĻ•āĻ°ā§‡ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡;
  • āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ°āĻž āĻāĻ–āĻ¨ SAIL āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡ CMake find_package() āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨;
  • āĻ¸ā§āĻĨāĻŋāĻ°āĻ­āĻžāĻŦā§‡ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ āĻ•āĻ°āĻžāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ (SAIL_STATIC=ON);
  • āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋāĻ¤ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•ā§‹āĻĄā§‡āĻ• āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ āĻ•āĻ°āĻžāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ (SAIL_COMBINE_CODECS=ON);
  • Âĩnit-āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ• āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻžāĻ° āĻ•āĻžāĻœ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡;

āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦāĻŋāĻ¤ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ā§‡āĻļāĻ¨ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ

  • āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ - āĻ­āĻŋāĻ¸āĻŋāĻĒāĻŋāĻ•ā§‡āĻœāĻŋ, āĻĄā§‡āĻŦāĻŋāĻ¯āĻŧāĻžāĻ¨ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻ—ā§āĻ˛āĻŋāĻ“ āĻ‰āĻĒāĻ˛āĻŦā§āĻ§
  • āĻ‰āĻ‡āĻ¨ā§āĻĄā§‹āĻœ - āĻ­āĻŋāĻ¸āĻŋāĻĒāĻŋāĻ•ā§‡āĻœāĻŋ
  • macOS - āĻšā§‹āĻ˛āĻžāĻ‡

āĻ‰āĻ¤ā§āĻ¸: opennet.ru

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨