/* * Copyright 2006-2012, Haiku, Inc. All Rights Reserved. * Distributed under the terms of the MIT License. * * Authors: * Philippe Houdoin */ #ifndef _GLRENDERER_ROSTER_H #define _GLRENDERER_ROSTER_H #include #include typedef BGLRenderer* (*InstantiateRenderer) (BGLView* view, ulong options); struct renderer_item { InstantiateRenderer entry; entry_ref ref; ino_t node; image_id image; }; typedef std::vector RendererMap; class GLRendererRoster { public: static GLRendererRoster *Roster(); BGLRenderer* GetRenderer(BGLView *view, ulong options); private: GLRendererRoster(); virtual ~GLRendererRoster(); void AddDefaultPaths(); status_t AddPath(const char* path); status_t AddRenderer(InstantiateRenderer entry, image_id image, const entry_ref* ref, ino_t node); status_t CreateRenderer(const entry_ref& ref); static GLRendererRoster* fInstance; bool fSafeMode; const char* fABISubDirectory; RendererMap fRenderers; }; #endif /* _GLRENDERER_ROSTER_H */