aboutsummaryrefslogtreecommitdiff
path: root/include/cru/platform/graph/graph_factory.hpp
blob: 51cf6f15c5f633d8f7c3dfb21d856b44f3fae234 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#pragma once
#include "cru/common/base.hpp"

#include "cru/common/ui_base.hpp"

#include <memory>
#include <string>
#include <string_view>

namespace cru::platform::graph {
struct SolidColorBrush;
struct GeometryBuilder;
struct FontDescriptor;
struct TextLayout;

struct GraphFactory : virtual Interface {
  static GraphFactory* GetInstance();

  virtual SolidColorBrush* CreateSolidColorBrush(const ui::Color& color) = 0;
  virtual GeometryBuilder* CreateGeometryBuilder() = 0;
  virtual FontDescriptor* CreateFontDescriptor(
      const std::wstring_view& font_family, float font_size) = 0;
  virtual TextLayout* CreateTextLayout(std::shared_ptr<FontDescriptor> font,
                                       std::wstring text) = 0;
};
}  // namespace cru::platform