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