1/* 2 * Copyright 2006-2012, Haiku, Inc. All Rights Reserved. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Philippe Houdoin <philippe.houdoin@free.fr> 7 */ 8#ifndef _GLRENDERER_ROSTER_H 9#define _GLRENDERER_ROSTER_H 10 11 12#include <GLRenderer.h> 13 14#include <vector> 15 16 17typedef BGLRenderer* (*InstantiateRenderer) (BGLView* view, ulong options); 18 19struct renderer_item { 20 InstantiateRenderer entry; 21 entry_ref ref; 22 ino_t node; 23 image_id image; 24}; 25 26typedef std::vector<renderer_item> RendererMap; 27 28 29class GLRendererRoster { 30 public: 31 static GLRendererRoster *Roster(); 32 BGLRenderer* GetRenderer(BGLView *view, ulong options); 33 34 private: 35 GLRendererRoster(); 36 virtual ~GLRendererRoster(); 37 38 void AddDefaultPaths(); 39 status_t AddPath(const char* path); 40 status_t AddRenderer(InstantiateRenderer entry, image_id image, 41 const entry_ref* ref, ino_t node); 42 status_t CreateRenderer(const entry_ref& ref); 43 44 static GLRendererRoster* fInstance; 45 bool fSafeMode; 46 const char* fABISubDirectory; 47 48 RendererMap fRenderers; 49}; 50 51 52#endif /* _GLRENDERER_ROSTER_H */ 53