|
8 | 8 | #include <py3cairo.h> |
9 | 9 | #include <cairo-script.h> |
10 | 10 |
|
| 11 | +#include <pybind11/native_enum.h> |
| 12 | + |
11 | 13 | #include <stack> |
12 | 14 | #include <thread> |
13 | 15 |
|
|
16 | 18 | using namespace pybind11::literals; |
17 | 19 | using namespace std::string_literals; |
18 | 20 |
|
19 | | -P11X_DECLARE_ENUM( |
20 | | - "antialias_t", "enum.Enum", |
21 | | - {"DEFAULT", CAIRO_ANTIALIAS_DEFAULT}, |
22 | | - {"NONE", CAIRO_ANTIALIAS_NONE}, |
23 | | - {"GRAY", CAIRO_ANTIALIAS_GRAY}, |
24 | | - {"SUBPIXEL", CAIRO_ANTIALIAS_SUBPIXEL}, |
25 | | - {"FAST", CAIRO_ANTIALIAS_FAST}, |
26 | | - {"GOOD", CAIRO_ANTIALIAS_GOOD}, |
27 | | - {"BEST", CAIRO_ANTIALIAS_BEST} |
28 | | -) |
29 | | -P11X_DECLARE_ENUM( |
30 | | - "dither_t", "enum.Enum", |
31 | | - {"NONE", mplcairo::detail::CAIRO_DITHER_NONE}, |
32 | | - {"DEFAULT", mplcairo::detail::CAIRO_DITHER_DEFAULT}, |
33 | | - {"FAST", mplcairo::detail::CAIRO_DITHER_FAST}, |
34 | | - {"GOOD", mplcairo::detail::CAIRO_DITHER_GOOD}, |
35 | | - {"BEST", mplcairo::detail::CAIRO_DITHER_BEST}, |
36 | | -) |
37 | | -P11X_DECLARE_ENUM( |
38 | | - "operator_t", "enum.Enum", |
39 | | - {"CLEAR", CAIRO_OPERATOR_CLEAR}, |
40 | | - {"SOURCE", CAIRO_OPERATOR_SOURCE}, |
41 | | - {"OVER", CAIRO_OPERATOR_OVER}, |
42 | | - {"IN", CAIRO_OPERATOR_IN}, |
43 | | - {"OUT", CAIRO_OPERATOR_OUT}, |
44 | | - {"ATOP", CAIRO_OPERATOR_ATOP}, |
45 | | - {"DEST", CAIRO_OPERATOR_DEST}, |
46 | | - {"DEST_OVER", CAIRO_OPERATOR_DEST_OVER}, |
47 | | - {"DEST_IN", CAIRO_OPERATOR_DEST_IN}, |
48 | | - {"DEST_OUT", CAIRO_OPERATOR_DEST_OUT}, |
49 | | - {"DEST_ATOP", CAIRO_OPERATOR_DEST_ATOP}, |
50 | | - {"XOR", CAIRO_OPERATOR_XOR}, |
51 | | - {"ADD", CAIRO_OPERATOR_ADD}, |
52 | | - {"SATURATE", CAIRO_OPERATOR_SATURATE}, |
53 | | - {"MULTIPLY", CAIRO_OPERATOR_MULTIPLY}, |
54 | | - {"SCREEN", CAIRO_OPERATOR_SCREEN}, |
55 | | - {"OVERLAY", CAIRO_OPERATOR_OVERLAY}, |
56 | | - {"DARKEN", CAIRO_OPERATOR_DARKEN}, |
57 | | - {"LIGHTEN", CAIRO_OPERATOR_LIGHTEN}, |
58 | | - {"COLOR_DODGE", CAIRO_OPERATOR_COLOR_DODGE}, |
59 | | - {"COLOR_BURN", CAIRO_OPERATOR_COLOR_BURN}, |
60 | | - {"HARD_LIGHT", CAIRO_OPERATOR_HARD_LIGHT}, |
61 | | - {"SOFT_LIGHT", CAIRO_OPERATOR_SOFT_LIGHT}, |
62 | | - {"DIFFERENCE", CAIRO_OPERATOR_DIFFERENCE}, |
63 | | - {"EXCLUSION", CAIRO_OPERATOR_EXCLUSION}, |
64 | | - {"HSL_HUE", CAIRO_OPERATOR_HSL_HUE}, |
65 | | - {"HSL_SATURATION", CAIRO_OPERATOR_HSL_SATURATION}, |
66 | | - {"HSL_COLOR", CAIRO_OPERATOR_HSL_COLOR}, |
67 | | - {"HSL_LUMINOSITY", CAIRO_OPERATOR_HSL_LUMINOSITY} |
68 | | -) |
69 | | -P11X_DECLARE_ENUM( |
70 | | - "format_t", "enum.Enum", |
71 | | - {"INVALID", CAIRO_FORMAT_INVALID}, |
72 | | - {"ARGB32", CAIRO_FORMAT_ARGB32}, |
73 | | - {"RGB24", CAIRO_FORMAT_RGB24}, |
74 | | - {"A8", CAIRO_FORMAT_A8}, |
75 | | - {"A1", CAIRO_FORMAT_A1}, |
76 | | - {"RGB16_565", CAIRO_FORMAT_RGB16_565}, |
77 | | - {"RGB30", CAIRO_FORMAT_RGB30}, |
78 | | - {"RGB96F", static_cast<cairo_format_t>(6)}, |
79 | | - {"RGBA128F", static_cast<cairo_format_t>(7)} |
80 | | -) |
81 | | -P11X_DECLARE_ENUM( // Only for error messages. |
82 | | - "_surface_type_t", "enum.Enum", |
83 | | - {"IMAGE", CAIRO_SURFACE_TYPE_IMAGE}, |
84 | | - {"PDF", CAIRO_SURFACE_TYPE_PDF}, |
85 | | - {"PS", CAIRO_SURFACE_TYPE_PS}, |
86 | | - {"XLIB", CAIRO_SURFACE_TYPE_XLIB}, |
87 | | - {"XCB", CAIRO_SURFACE_TYPE_XCB}, |
88 | | - {"GLITZ", CAIRO_SURFACE_TYPE_GLITZ}, |
89 | | - {"QUARTZ", CAIRO_SURFACE_TYPE_QUARTZ}, |
90 | | - {"WIN32", CAIRO_SURFACE_TYPE_WIN32}, |
91 | | - {"BEOS", CAIRO_SURFACE_TYPE_BEOS}, |
92 | | - {"DIRECTFB", CAIRO_SURFACE_TYPE_DIRECTFB}, |
93 | | - {"SVG", CAIRO_SURFACE_TYPE_SVG}, |
94 | | - {"OS2", CAIRO_SURFACE_TYPE_OS2}, |
95 | | - {"WIN32_PRINTING", CAIRO_SURFACE_TYPE_WIN32_PRINTING}, |
96 | | - {"QUARTZ_IMAGE", CAIRO_SURFACE_TYPE_QUARTZ_IMAGE}, |
97 | | - {"SCRIPT", CAIRO_SURFACE_TYPE_SCRIPT}, |
98 | | - {"QT", CAIRO_SURFACE_TYPE_QT}, |
99 | | - {"RECORDING", CAIRO_SURFACE_TYPE_RECORDING}, |
100 | | - {"VG", CAIRO_SURFACE_TYPE_VG}, |
101 | | - {"GL", CAIRO_SURFACE_TYPE_GL}, |
102 | | - {"DRM", CAIRO_SURFACE_TYPE_DRM}, |
103 | | - {"TEE", CAIRO_SURFACE_TYPE_TEE}, |
104 | | - {"XML", CAIRO_SURFACE_TYPE_XML}, |
105 | | - {"SKIA", CAIRO_SURFACE_TYPE_SKIA}, |
106 | | - {"SUBSURFACE", CAIRO_SURFACE_TYPE_SUBSURFACE}, |
107 | | - {"COGL", CAIRO_SURFACE_TYPE_COGL} |
108 | | -) |
109 | | -P11X_DECLARE_ENUM( |
110 | | - "_StreamSurfaceType", "enum.Enum", |
111 | | - {"PDF", mplcairo::StreamSurfaceType::PDF}, |
112 | | - {"PS", mplcairo::StreamSurfaceType::PS}, |
113 | | - {"EPS", mplcairo::StreamSurfaceType::EPS}, |
114 | | - {"SVG", mplcairo::StreamSurfaceType::SVG}, |
115 | | - {"Script", mplcairo::StreamSurfaceType::Script} |
116 | | -) |
117 | | - |
118 | 21 | namespace mplcairo { |
119 | 22 |
|
120 | 23 | Region::Region( |
@@ -2134,7 +2037,99 @@ Only intended for debugging purposes. |
2134 | 2037 | )__doc__"); |
2135 | 2038 |
|
2136 | 2039 | // Export classes. |
2137 | | - p11x::bind_enums(m); |
| 2040 | + py::native_enum<cairo_antialias_t>(m, "antialias_t", "enum.Enum") |
| 2041 | + .value("DEFAULT", CAIRO_ANTIALIAS_DEFAULT) |
| 2042 | + .value("NONE", CAIRO_ANTIALIAS_NONE) |
| 2043 | + .value("GRAY", CAIRO_ANTIALIAS_GRAY) |
| 2044 | + .value("SUBPIXEL", CAIRO_ANTIALIAS_SUBPIXEL) |
| 2045 | + .value("FAST", CAIRO_ANTIALIAS_FAST) |
| 2046 | + .value("GOOD", CAIRO_ANTIALIAS_GOOD) |
| 2047 | + .value("BEST", CAIRO_ANTIALIAS_BEST) |
| 2048 | + .finalize(); |
| 2049 | + py::native_enum<detail::cairo_dither_t>(m, "dither_t", "enum.Enum") |
| 2050 | + .value("NONE", detail::CAIRO_DITHER_NONE) |
| 2051 | + .value("DEFAULT", detail::CAIRO_DITHER_DEFAULT) |
| 2052 | + .value("FAST", detail::CAIRO_DITHER_FAST) |
| 2053 | + .value("GOOD", detail::CAIRO_DITHER_GOOD) |
| 2054 | + .value("BEST", detail::CAIRO_DITHER_BEST) |
| 2055 | + .finalize(); |
| 2056 | + py::native_enum<cairo_operator_t>(m, "operator_t", "enum.Enum") |
| 2057 | + .value("CLEAR", CAIRO_OPERATOR_CLEAR) |
| 2058 | + .value("SOURCE", CAIRO_OPERATOR_SOURCE) |
| 2059 | + .value("OVER", CAIRO_OPERATOR_OVER) |
| 2060 | + .value("IN", CAIRO_OPERATOR_IN) |
| 2061 | + .value("OUT", CAIRO_OPERATOR_OUT) |
| 2062 | + .value("ATOP", CAIRO_OPERATOR_ATOP) |
| 2063 | + .value("DEST", CAIRO_OPERATOR_DEST) |
| 2064 | + .value("DEST_OVER", CAIRO_OPERATOR_DEST_OVER) |
| 2065 | + .value("DEST_IN", CAIRO_OPERATOR_DEST_IN) |
| 2066 | + .value("DEST_OUT", CAIRO_OPERATOR_DEST_OUT) |
| 2067 | + .value("DEST_ATOP", CAIRO_OPERATOR_DEST_ATOP) |
| 2068 | + .value("XOR", CAIRO_OPERATOR_XOR) |
| 2069 | + .value("ADD", CAIRO_OPERATOR_ADD) |
| 2070 | + .value("SATURATE", CAIRO_OPERATOR_SATURATE) |
| 2071 | + .value("MULTIPLY", CAIRO_OPERATOR_MULTIPLY) |
| 2072 | + .value("SCREEN", CAIRO_OPERATOR_SCREEN) |
| 2073 | + .value("OVERLAY", CAIRO_OPERATOR_OVERLAY) |
| 2074 | + .value("DARKEN", CAIRO_OPERATOR_DARKEN) |
| 2075 | + .value("LIGHTEN", CAIRO_OPERATOR_LIGHTEN) |
| 2076 | + .value("COLOR_DODGE", CAIRO_OPERATOR_COLOR_DODGE) |
| 2077 | + .value("COLOR_BURN", CAIRO_OPERATOR_COLOR_BURN) |
| 2078 | + .value("HARD_LIGHT", CAIRO_OPERATOR_HARD_LIGHT) |
| 2079 | + .value("SOFT_LIGHT", CAIRO_OPERATOR_SOFT_LIGHT) |
| 2080 | + .value("DIFFERENCE", CAIRO_OPERATOR_DIFFERENCE) |
| 2081 | + .value("EXCLUSION", CAIRO_OPERATOR_EXCLUSION) |
| 2082 | + .value("HSL_HUE", CAIRO_OPERATOR_HSL_HUE) |
| 2083 | + .value("HSL_SATURATION", CAIRO_OPERATOR_HSL_SATURATION) |
| 2084 | + .value("HSL_COLOR", CAIRO_OPERATOR_HSL_COLOR) |
| 2085 | + .value("HSL_LUMINOSITY", CAIRO_OPERATOR_HSL_LUMINOSITY) |
| 2086 | + .finalize(); |
| 2087 | + py::native_enum<cairo_format_t>(m, "format_t", "enum.Enum") |
| 2088 | + .value("INVALID", CAIRO_FORMAT_INVALID) |
| 2089 | + .value("ARGB32", CAIRO_FORMAT_ARGB32) |
| 2090 | + .value("RGB24", CAIRO_FORMAT_RGB24) |
| 2091 | + .value("A8", CAIRO_FORMAT_A8) |
| 2092 | + .value("A1", CAIRO_FORMAT_A1) |
| 2093 | + .value("RGB16_565", CAIRO_FORMAT_RGB16_565) |
| 2094 | + .value("RGB30", CAIRO_FORMAT_RGB30) |
| 2095 | + .value("RGB96F", static_cast<cairo_format_t>(6)) |
| 2096 | + .value("RGBA128F", static_cast<cairo_format_t>(7)) |
| 2097 | + .finalize(); |
| 2098 | + py::native_enum<cairo_surface_type_t>(m, "_surface_type_t", "enum.Enum") |
| 2099 | + // Only for error messages. |
| 2100 | + .value("IMAGE", CAIRO_SURFACE_TYPE_IMAGE) |
| 2101 | + .value("PDF", CAIRO_SURFACE_TYPE_PDF) |
| 2102 | + .value("PS", CAIRO_SURFACE_TYPE_PS) |
| 2103 | + .value("XLIB", CAIRO_SURFACE_TYPE_XLIB) |
| 2104 | + .value("XCB", CAIRO_SURFACE_TYPE_XCB) |
| 2105 | + .value("GLITZ", CAIRO_SURFACE_TYPE_GLITZ) |
| 2106 | + .value("QUARTZ", CAIRO_SURFACE_TYPE_QUARTZ) |
| 2107 | + .value("WIN32", CAIRO_SURFACE_TYPE_WIN32) |
| 2108 | + .value("BEOS", CAIRO_SURFACE_TYPE_BEOS) |
| 2109 | + .value("DIRECTFB", CAIRO_SURFACE_TYPE_DIRECTFB) |
| 2110 | + .value("SVG", CAIRO_SURFACE_TYPE_SVG) |
| 2111 | + .value("OS2", CAIRO_SURFACE_TYPE_OS2) |
| 2112 | + .value("WIN32_PRINTING", CAIRO_SURFACE_TYPE_WIN32_PRINTING) |
| 2113 | + .value("QUARTZ_IMAGE", CAIRO_SURFACE_TYPE_QUARTZ_IMAGE) |
| 2114 | + .value("SCRIPT", CAIRO_SURFACE_TYPE_SCRIPT) |
| 2115 | + .value("QT", CAIRO_SURFACE_TYPE_QT) |
| 2116 | + .value("RECORDING", CAIRO_SURFACE_TYPE_RECORDING) |
| 2117 | + .value("VG", CAIRO_SURFACE_TYPE_VG) |
| 2118 | + .value("GL", CAIRO_SURFACE_TYPE_GL) |
| 2119 | + .value("DRM", CAIRO_SURFACE_TYPE_DRM) |
| 2120 | + .value("TEE", CAIRO_SURFACE_TYPE_TEE) |
| 2121 | + .value("XML", CAIRO_SURFACE_TYPE_XML) |
| 2122 | + .value("SKIA", CAIRO_SURFACE_TYPE_SKIA) |
| 2123 | + .value("SUBSURFACE", CAIRO_SURFACE_TYPE_SUBSURFACE) |
| 2124 | + .value("COGL", CAIRO_SURFACE_TYPE_COGL) |
| 2125 | + .finalize(); |
| 2126 | + py::native_enum<StreamSurfaceType>(m, "_StreamSurfaceType", "enum.Enum") |
| 2127 | + .value("PDF", mplcairo::StreamSurfaceType::PDF) |
| 2128 | + .value("PS", mplcairo::StreamSurfaceType::PS) |
| 2129 | + .value("EPS", mplcairo::StreamSurfaceType::EPS) |
| 2130 | + .value("SVG", mplcairo::StreamSurfaceType::SVG) |
| 2131 | + .value("Script", mplcairo::StreamSurfaceType::Script) |
| 2132 | + .finalize(); |
2138 | 2133 |
|
2139 | 2134 | py::class_<Region>(m, "_Region", py::buffer_protocol()) |
2140 | 2135 | // Only for patching Agg... |
|
0 commit comments