NVIDIA DeepStream SDK API Reference

8.0 Release
backend.hpp
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2023-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3  * SPDX-License-Identifier: LicenseRef-NvidiaProprietary
4  *
5  * NVIDIA CORPORATION, its affiliates and licensors retain all intellectual
6  * property and proprietary rights in and to this material, related
7  * documentation and any modifications thereto. Any use, reproduction,
8  * disclosure or distribution of this material and related documentation
9  * without an express license agreement from NVIDIA CORPORATION or
10  * its affiliates is strictly prohibited.
11  */
12 
13 #ifndef TEXT_BACKEND_HPP
14 #define TEXT_BACKEND_HPP
15 
16 #include <vector>
17 #include <memory>
18 #include <tuple>
19 
20 // #define ENABLE_TEXT_BACKEND_PANGO
21 // #define ENABLE_TEXT_BACKEND_STB
22 #define MAX_FONT_SIZE 200
23 
24 enum class TextBackendType : int {
25  None = 0,
26  PangoCairo = 1,
27  StbTrueType = 2
28 };
29 
30 class WordMeta{
31 public:
32  virtual int width() const = 0;
33  virtual int height() const = 0;
34  virtual int x_offset_on_bitmap() const = 0;
35  virtual int xadvance(int font_size, bool empty=false) const = 0;
36 };
37 
39 public:
40  virtual WordMeta* query(unsigned long int word) = 0;
41 };
42 
44 public:
45  virtual std::vector<unsigned long int> split_utf8(const char* utf8_text) = 0;
46  virtual std::tuple<int, int, int> measure_text(const std::vector<unsigned long int>& words, unsigned int font_size, const char* font) = 0;
47  virtual void add_build_text(const std::vector<unsigned long int>& words, unsigned int font_size, const char* font) = 0;
48  virtual void build_bitmap(void* stream = nullptr) = 0;
49  virtual WordMetaMapper* query(const char* font, int font_size) = 0;
50  virtual unsigned char* bitmap_device_pointer() const = 0;
51  virtual int bitmap_width() const = 0;
52  virtual int compute_y_offset(int max_glyph_height, int h, WordMeta* word, int font_size) const = 0;
53  virtual int uniform_font_size(int size) const = 0;
54 };
55 
56 const char* text_backend_type_name(TextBackendType backend);
57 std::shared_ptr<TextBackend> create_text_backend(TextBackendType backend);
58 std::string concat_font_name_size(const char* name, int size);
59 
60 #endif // TEXT_BACKEND_HPP
cuOSDClockFormat::None
@ None
cuOSDTextBackend::PangoCairo
@ PangoCairo
TextBackendType
TextBackendType
Definition: backend.hpp:24
WordMeta
Definition: backend.hpp:30
cuOSDTextBackend::StbTrueType
@ StbTrueType
WordMetaMapper
Definition: backend.hpp:38
WordMeta::xadvance
virtual int xadvance(int font_size, bool empty=false) const =0
WordMeta::width
virtual int width() const =0
TextBackend::add_build_text
virtual void add_build_text(const std::vector< unsigned long int > &words, unsigned int font_size, const char *font)=0
TextBackend::uniform_font_size
virtual int uniform_font_size(int size) const =0
text_backend_type_name
const char * text_backend_type_name(TextBackendType backend)
TextBackend::bitmap_device_pointer
virtual unsigned char * bitmap_device_pointer() const =0
TextBackend::build_bitmap
virtual void build_bitmap(void *stream=nullptr)=0
TextBackend::compute_y_offset
virtual int compute_y_offset(int max_glyph_height, int h, WordMeta *word, int font_size) const =0
concat_font_name_size
std::string concat_font_name_size(const char *name, int size)
TextBackend
Definition: backend.hpp:43
WordMeta::height
virtual int height() const =0
TextBackend::measure_text
virtual std::tuple< int, int, int > measure_text(const std::vector< unsigned long int > &words, unsigned int font_size, const char *font)=0
WordMeta::x_offset_on_bitmap
virtual int x_offset_on_bitmap() const =0
TextBackend::bitmap_width
virtual int bitmap_width() const =0
TextBackend::query
virtual WordMetaMapper * query(const char *font, int font_size)=0
WordMetaMapper::query
virtual WordMeta * query(unsigned long int word)=0
create_text_backend
std::shared_ptr< TextBackend > create_text_backend(TextBackendType backend)
TextBackend::split_utf8
virtual std::vector< unsigned long int > split_utf8(const char *utf8_text)=0