C++: drops IntSize in favor of Size<T> (#922)

Fixes #909

Since we declare the struct in C++, we don't need to declare it in
rust for cbindgen anymore, as long as we expose the Size2D type from
euclid to the cbindgen_private namespace
This commit is contained in:
Olivier Goffart 2022-02-08 14:12:52 +01:00 committed by GitHub
parent 7a735a48db
commit 753784c331
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 31 additions and 32 deletions

View file

@ -4,6 +4,7 @@
#pragma once
#include <string_view>
#include "slint_generated_public.h"
#include "slint_size.h"
#include "slint_image_internal.h"
#include "slint_string.h"
#include "slint_sharedvector.h"
@ -33,7 +34,7 @@ public:
*/
/// Returns the size of the Image in pixels.
IntSize size() const { return cbindgen_private::types::slint_image_size(&data); }
Size<unsigned int> size() const { return cbindgen_private::types::slint_image_size(&data); }
/// Returns the path of the image on disk, if it was constructed via Image::load_from_path().
std::optional<slint::SharedString> path() const

View file

@ -0,0 +1,29 @@
// Copyright © SixtyFPS GmbH <info@sixtyfps.io>
// SPDX-License-Identifier: (GPL-3.0-only OR LicenseRef-SixtyFPS-commercial)
#pragma once
namespace slint {
/// The Size structure is used to represent a two-dimensional size
/// with width and height.
template <typename T>
struct Size {
/// The width of the size
T width;
/// The height of the size
T height;
/// Compares with \a other and returns true if they are equal; false otherwise.
bool operator==(const Size &other) const = default;
};
namespace cbindgen_private {
// The Size types are expanded to the Size2D<...> type from the euclid crate which
// is binary compatible with Size<T>
template <typename T> using Size2D = Size<T>;
}
}