cxx_qt_lib/core/qt.rs
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174
// SPDX-FileCopyrightText: 2023 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
// SPDX-FileContributor: Andrew Hayzen <andrew.hayzen@kdab.com>
//
// SPDX-License-Identifier: MIT OR Apache-2.0
#[cxx::bridge(namespace = "Qt")]
mod ffi {
/// This enum type defines what happens to the aspect ratio when scaling an rectangle.
#[repr(i32)]
enum AspectRatioMode {
/// The size is scaled freely. The aspect ratio is not preserved.
IgnoreAspectRatio,
/// The size is scaled to a rectangle as large as possible inside a given rectangle, preserving the aspect ratio.
KeepAspectRatio,
/// The size is scaled to a rectangle as small as possible outside a given rectangle, preserving the aspect ratio.
KeepAspectRatioByExpanding,
}
#[repr(i32)]
enum CaseSensitivity {
CaseInsensitive,
CaseSensitive,
}
#[repr(i32)]
enum DateFormat {
TextDate = 0,
ISODateWithMs = 9,
ISODate = 1,
RFC2822Date = 8,
}
#[repr(i32)]
enum SplitBehaviorFlags {
KeepEmptyParts,
SkipEmptyParts,
}
#[repr(i32)]
enum TimeSpec {
/// Local time, controlled by a system time-zone setting.
LocalTime,
/// Coordinated Universal Time.
UTC,
/// An offset in seconds from Coordinated Universal Time.
OffsetFromUTC,
/// A named time zone.
TimeZone,
}
/// This enum type defines whether image transformations (e.g., scaling) should be smooth or not.
#[repr(i32)]
enum TransformationMode {
/// The transformation is performed quickly, with no smoothing.
FastTransformation,
/// The resulting image is transformed using bilinear filtering.
SmoothTransformation,
}
/// This enum type defines the pen styles that can be drawn using QPainter.
#[repr(i32)]
enum PenStyle {
/// no line at all. For example, QPainter::drawRect() fills but does not draw any boundary line.
NoPen,
/// A plain line.
SolidLine,
/// Dashes separated by a few pixels.
DashLine,
/// Dots separated by a few pixels.
DotLine,
/// Alternate dots and dashes.
DashDotLine,
/// One dash, two dots, one dash, two dots.
DashDotDotLine,
/// A custom pattern defined using QPainterPathStroker::setDashPattern().
CustomDashLine,
}
/// This enum type defines the line endcap style
#[repr(i32)]
enum PenCapStyle {
FlatCap = 0x00,
SquareCap = 0x10,
RoundCap = 0x20,
MPenCapStyle = 0x30,
}
/// This enum type defines the line join style.
#[repr(i32)]
enum PenJoinStyle {
MiterJoin = 0x00,
BevelJoin = 0x40,
RoundJoin = 0x80,
SvgMiterJoin = 0x100,
MPenJoinStyle = 0x1c0,
}
#[repr(i32)]
enum FillRule {
/// Specifies that the region is filled using the odd even fill rule.
/// With this rule, we determine whether a point is inside the shape by using
/// the following method. Draw a horizontal line from the point to a location
/// outside the shape, and count the number of intersections. If the number of
/// intersections is an odd number, the point is inside the shape. This mode is the default.
OddEvenFill,
/// Specifies that the region is filled using the non zero winding rule.
/// With this rule, we determine whether a point is inside the shape by using the following method.
/// Draw a horizontal line from the point to a location outside the shape. Determine whether
/// the direction of the line at each intersection point is up or down. The winding number is determined
/// by summing the direction of each intersection. If the number is non zero, the point is inside the shape.
/// This fill mode can also in most cases be considered as the intersection of closed shapes.
WindingFill,
}
/// This enum type specifies the direction of Qt's layouts and text handling.
#[repr(i32)]
enum LayoutDirection {
LeftToRight,
RightToLeft,
LayoutDirectionAuto,
}
/// This enum type specifies the background mode
#[repr(i32)]
enum BGMode {
TransparentMode,
OpaqueMode,
}
#[repr(i32)]
enum ClipOperation {
NoClip,
ReplaceClip,
IntersectClip,
}
/// This enum is used by QPainter::drawRoundedRect() and QPainterPath::addRoundedRect()
/// functions to specify the radii of rectangle corners with respect to the dimensions
/// of the bounding rectangles specified.
#[repr(i32)]
enum SizeMode {
/// Specifies the size using absolute measurements.
AbsoluteSize,
/// Specifies the size relative to the bounding rectangle, typically using percentage measurements.
RelativeSize,
}
unsafe extern "C++" {
include!("cxx-qt-lib/qt.h");
type AspectRatioMode;
type CaseSensitivity;
type DateFormat;
type SplitBehaviorFlags;
type TimeSpec;
type TransformationMode;
type PenStyle;
type PenCapStyle;
type PenJoinStyle;
type FillRule;
type LayoutDirection;
type BGMode;
type ClipOperation;
type SizeMode;
}
}
pub use ffi::{
AspectRatioMode, BGMode, CaseSensitivity, ClipOperation, DateFormat, FillRule, LayoutDirection,
PenCapStyle, PenJoinStyle, PenStyle, SizeMode, SplitBehaviorFlags, TimeSpec,
TransformationMode,
};
// Reexport ConnectionType from cxx-qt
pub use cxx_qt::ConnectionType;