xref: /aosp_15_r20/external/harfbuzz_ng/perf/hb-benchmark.hh (revision 2d1272b857b1f7575e6e246373e1cb218663db8a)
1 /*
2  * Copyright © 2024  Google, Inc.
3  *
4  *  This is part of HarfBuzz, a text shaping library.
5  *
6  * Permission is hereby granted, without written agreement and without
7  * license or royalty fees, to use, copy, modify, and distribute this
8  * software and its documentation for any purpose, provided that the
9  * above copyright notice and the following two paragraphs appear in
10  * all copies of this software.
11  *
12  * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
13  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
14  * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
15  * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
16  * DAMAGE.
17  *
18  * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
19  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
20  * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
21  * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
22  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
23  *
24  * Author(s): Behdad Esfahbod
25  */
26 
27 #ifndef HB_BENCHMARK_HH
28 #define HB_BENCHMARK_HH
29 
30 #include <hb-config.hh>
31 
32 #include <hb.h>
33 #include <hb-subset.h>
34 
35 #include <hb-ot.h>
36 #ifdef HAVE_FREETYPE
37 #include <hb-ft.h>
38 #endif
39 #ifdef HAVE_CORETEXT
40 #include <hb-coretext.h>
41 #endif
42 
43 #include <benchmark/benchmark.h>
44 
45 #include <cassert>
46 #include <cstdlib>
47 #include <cstring>
48 
49 
50 HB_BEGIN_DECLS
51 
52 static inline hb_face_t *
hb_benchmark_face_create_from_file_or_fail(const char * font_path,unsigned face_index)53 hb_benchmark_face_create_from_file_or_fail (const char *font_path,
54 					    unsigned face_index)
55 {
56   const char *loader = getenv ("HB_FACE_LOADER");
57   if (loader && !*loader)
58     loader = nullptr;
59 
60 #ifdef HAVE_FREETYPE
61   if (loader && !strcmp (loader, "ft"))
62     return hb_ft_face_create_from_file_or_fail (font_path, face_index);
63 #endif
64 #ifdef HAVE_CORETEXT
65   if (loader && !strcmp (loader, "coretext"))
66     return hb_coretext_face_create_from_file_or_fail (font_path, face_index);
67 #endif
68   if (!loader || !strcmp (loader, "ot"))
69     return hb_face_create_from_file_or_fail (font_path, face_index);
70 
71   assert (false);
72 }
73 
74 HB_END_DECLS
75 
76 #endif /* HB_BENCHMARK_HH */
77