#ifndef ARC_GRAPHICS_RENDERER_H_ #define ARC_GRAPHICS_RENDERER_H_ #ifdef __cplusplus extern "C" { #endif #include /** * @brief predefien ARC_EngineData so as not to get circular reference */ typedef struct ARC_EngineData ARC_EngineData; /** * @note ARC_RendererType is determined by which window backend you are using */ typedef struct ARC_RendererType ARC_Renderer; /** * @brief creates ARC_Renderer type with ARC_EngineData * * @param renderer ARC_Renderer to initialize * @param data the engine data to create from */ void ARC_Renderer_CreateWithEngineData(ARC_Renderer **renderer, ARC_EngineData *data); /** * @brief destroys ARC_Renderer type * * @param renderer ARC_Renderer to destory */ void ARC_Renderer_Destroy(ARC_Renderer *renderer); /** * @breif clears the renderer * * @param renderer the renderer to clear */ void ARC_Renderer_Clear(ARC_Renderer *renderer); /** * @brief renders the renderer * * @param renderer renders all buffers and current renderer to window */ void ARC_Renderer_Render(ARC_Renderer *renderer); /** * @brief * * @param renderer * @param zIndex */ void ARC_Renderer_InitBuffer(ARC_Renderer *renderer, uint32_t zIndex); /** * @brief * * @param renderer * @param zIndex */ void ARC_Renderer_RemoveBuffer(ARC_Renderer *renderer, uint32_t zIndex); /** * @brief * * @param renderer */ void ARC_Renderer_ClearBuffers(ARC_Renderer *renderer); /** * @brief * * @param renderer * @param zIndex */ void ARC_Renderer_SetCurrentBuffer(ARC_Renderer *renderer, uint32_t zIndex); /** * @brief * * @param renderer */ void ARC_Renderer_UnsetBuffer(ARC_Renderer *renderer); #ifdef __cplusplus } #endif #endif // !ARC_GRAPHICS_RENDERER_H_