Use Slim Reader/Writer lock to replace CRITICAL_SECTION (better performance).
[gdipp.git] / gdipp_config / render_config_delta_cache.h
blobabc8caf51421c535964ac3343dc1f6c8c1be1d43
1 #pragma once
3 #include "gdipp_config/render_config_delta.h"
4 #include "gdipp_config/font_config_criteria.h"
5 #include "gdipp_config/proc_config_criteria.h"
7 namespace gdipp
10 class GDIPP_API render_config_delta_cache
12 public:
13 render_config_delta_cache(const config_file &file);
14 render_config_delta get_font_render_config_delta(bool bold, bool italic, LONG height, const wchar_t *font_name);
15 render_config_delta get_proc_render_config_delta(const wchar_t *proc_name);
17 private:
18 // if the font does not exist in the cache, this function is called to find a render config that matches the criteria
19 const render_config_delta *find_font_render_config_delta(bool bold, bool italic, LONG height, const wchar_t *font_name) const;
21 std::map<uint32_t, const render_config_delta *> _cache;
22 std::list<std::pair<font_config_criteria, render_config_delta>> _font_config_deltas;
23 std::list<std::pair<proc_config_criteria, render_config_delta>> _proc_config_deltas;