/* * Copyright (c) Hisilicon Technologies Co., Ltd. 2021-2023. All rights reserved. * Description: ImageMagic core * Author: Hisilicon * Created: 2021.04.16 */ #ifndef IMAGEKIT_IMAGE_MAGIC_H #define IMAGEKIT_IMAGE_MAGIC_H #include "ImageFilter.h" #include "ImageTarget.h" namespace PhoenixImage { class ImageMagicImpl; /** * The main interface for Imagekit functionality. */ class ImageMagic { public: /** * @brief ImageTexture constructor. * @param [in] ignoreContext: if true, MagiceImage will using outside context to render. * if false, MagiceImage will create context by itself. * @param [in] highPriority: if true and ignoreContext is false, MagiceImage will create high priority context. * otherwise, no effect. * @param [in] vulkanRender: if true, MagiceImage will render by vulkan. * if false, MagiceImage will render by OpenGL ES. */ ImageMagic(bool ignoreContext = false, bool highPriority = false, bool renderByVulkan = false); ~ImageMagic(); /** * @brief set the render target for this magic image transform, if using external context, this should be ignored. * @param [in] target: Image render target. */ int32_t SetTarget(ImageTarget *target); /** * @brief set the input source image texture for this magic image transform, if using external context, this should * be ignored. * @param [in] source: input soure image texture pointer array. * @param [in] source: input soure image texture numbers. */ int32_t SetSource(ImageTexture **source, int num = 1); /** * @brief set filter for this magic image transform. * @param [in] filter: Image transform filter. */ int32_t SetFilter(ImageFilter *filter); /** * @brief start the rendering for this magic image transform. You can use bufHolder object to sync up the rendering * process. */ int32_t Render(void); private: std::unique_ptr pImpl_; }; } /* namespace PhoenixImage */ #endif