mirror of
				https://github.com/slint-ui/slint.git
				synced 2025-10-31 12:04:33 +00:00 
			
		
		
		
	 e85e69fda0
			
		
	
	
		e85e69fda0
		
			
		
	
	
	
	
		
			
			This avoid repeating the enums both in the compiler and in the runtime library, and register them in a bunch of other places. So it should be easier to add enums and enum values Since cbindgen doesn't see through the macro, generate the enum manually
		
			
				
	
	
		
			68 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // Copyright © SixtyFPS GmbH <info@slint-ui.com>
 | |
| // SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-commercial
 | |
| 
 | |
| #pragma once
 | |
| #include <initializer_list>
 | |
| #include <string_view>
 | |
| #include "slint_pathdata_internal.h"
 | |
| 
 | |
| namespace slint::private_api {
 | |
| using cbindgen_private::types::PathArcTo;
 | |
| using cbindgen_private::types::PathCubicTo;
 | |
| using cbindgen_private::types::PathElement;
 | |
| using cbindgen_private::types::PathLineTo;
 | |
| using cbindgen_private::types::PathMoveTo;
 | |
| using cbindgen_private::types::PathQuadraticTo;
 | |
| using cbindgen_private::types::Point;
 | |
| using cbindgen_private::PathEvent;
 | |
| 
 | |
| struct PathData
 | |
| {
 | |
| public:
 | |
|     using Tag = cbindgen_private::types::PathData::Tag;
 | |
| 
 | |
|     PathData() : data(Data::None()) { }
 | |
|     PathData(const PathElement *firstElement, size_t count)
 | |
|         : data(Data::Elements(elements_from_array(firstElement, count)))
 | |
|     {
 | |
|     }
 | |
| 
 | |
|     PathData(const PathEvent *firstEvent, size_t event_count, const Point *firstCoordinate,
 | |
|              size_t coordinate_count)
 | |
|         : data(events_from_array(firstEvent, event_count, firstCoordinate, coordinate_count))
 | |
|     {
 | |
|     }
 | |
| 
 | |
|     PathData(const SharedString &commands)
 | |
|         : data(cbindgen_private::types::PathData::Commands(commands))
 | |
|     {
 | |
|     }
 | |
| 
 | |
|     friend bool operator==(const PathData &a, const PathData &b) = default;
 | |
| 
 | |
| private:
 | |
|     static SharedVector<PathElement> elements_from_array(const PathElement *firstElement,
 | |
|                                                          size_t count)
 | |
|     {
 | |
|         SharedVector<PathElement> tmp;
 | |
|         slint_new_path_elements(&tmp, firstElement, count);
 | |
|         return tmp;
 | |
|     }
 | |
| 
 | |
|     static cbindgen_private::types::PathData events_from_array(const PathEvent *firstEvent,
 | |
|                                                                size_t event_count,
 | |
|                                                                const Point *firstCoordinate,
 | |
|                                                                size_t coordinate_count)
 | |
|     {
 | |
|         SharedVector<PathEvent> events;
 | |
|         SharedVector<Point> coordinates;
 | |
|         slint_new_path_events(&events, &coordinates, firstEvent, event_count, firstCoordinate,
 | |
|                               coordinate_count);
 | |
|         return Data::Events(events, coordinates);
 | |
|     }
 | |
| 
 | |
|     using Data = cbindgen_private::types::PathData;
 | |
|     Data data;
 | |
| };
 | |
| 
 | |
| }
 |