@onekeyfe/react-native-segment-slider 3.0.85 → 3.0.86-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -3
- package/android/src/main/java/com/margelo/nitro/segmentslider/HybridSegmentSlider.kt +31 -7
- package/ios/HybridSegmentSlider.swift +34 -8
- package/lib/nitrogen/generated/android/c++/JFunc_void.hpp +3 -3
- package/lib/nitrogen/generated/android/c++/JFunc_void_double.hpp +3 -3
- package/lib/nitrogen/generated/android/c++/JHybridSegmentSliderSpec.cpp +71 -63
- package/lib/nitrogen/generated/android/c++/JHybridSegmentSliderSpec.hpp +24 -20
- package/lib/nitrogen/generated/android/c++/views/JHybridSegmentSliderStateUpdater.cpp +81 -77
- package/lib/nitrogen/generated/android/c++/views/JHybridSegmentSliderStateUpdater.hpp +4 -4
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/Func_void.kt +1 -1
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/Func_void_double.kt +1 -1
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/HybridSegmentSliderSpec.kt +25 -17
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/segmentsliderOnLoad.kt +1 -1
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/views/HybridSegmentSliderManager.kt +10 -40
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/views/HybridSegmentSliderStateUpdater.kt +1 -1
- package/lib/nitrogen/generated/android/segmentslider+autolinking.cmake +1 -1
- package/lib/nitrogen/generated/android/segmentslider+autolinking.gradle +1 -1
- package/lib/nitrogen/generated/android/segmentsliderOnLoad.cpp +20 -30
- package/lib/nitrogen/generated/android/segmentsliderOnLoad.hpp +5 -14
- package/lib/nitrogen/generated/ios/SegmentSlider+autolinking.rb +2 -2
- package/lib/nitrogen/generated/ios/SegmentSlider-Swift-Cxx-Bridge.cpp +1 -1
- package/lib/nitrogen/generated/ios/SegmentSlider-Swift-Cxx-Bridge.hpp +3 -3
- package/lib/nitrogen/generated/ios/SegmentSlider-Swift-Cxx-Umbrella.hpp +1 -1
- package/lib/nitrogen/generated/ios/SegmentSliderAutolinking.mm +1 -1
- package/lib/nitrogen/generated/ios/SegmentSliderAutolinking.swift +8 -9
- package/lib/nitrogen/generated/ios/c++/HybridSegmentSliderSpecSwift.cpp +1 -1
- package/lib/nitrogen/generated/ios/c++/HybridSegmentSliderSpecSwift.hpp +7 -7
- package/lib/nitrogen/generated/ios/c++/views/HybridSegmentSliderComponent.mm +6 -27
- package/lib/nitrogen/generated/ios/swift/Func_void.swift +2 -1
- package/lib/nitrogen/generated/ios/swift/Func_void_double.swift +2 -1
- package/lib/nitrogen/generated/ios/swift/HybridSegmentSliderSpec.swift +5 -3
- package/lib/nitrogen/generated/ios/swift/HybridSegmentSliderSpec_cxx.swift +13 -18
- package/lib/nitrogen/generated/shared/c++/HybridSegmentSliderSpec.cpp +3 -1
- package/lib/nitrogen/generated/shared/c++/HybridSegmentSliderSpec.hpp +3 -1
- package/lib/nitrogen/generated/shared/c++/views/HybridSegmentSliderComponent.cpp +46 -10
- package/lib/nitrogen/generated/shared/c++/views/HybridSegmentSliderComponent.hpp +7 -9
- package/lib/nitrogen/generated/shared/json/SegmentSliderConfig.json +1 -0
- package/lib/typescript/src/SegmentSlider.nitro.d.ts +8 -0
- package/lib/typescript/src/SegmentSlider.nitro.d.ts.map +1 -1
- package/nitrogen/generated/android/c++/JFunc_void.hpp +3 -3
- package/nitrogen/generated/android/c++/JFunc_void_double.hpp +3 -3
- package/nitrogen/generated/android/c++/JHybridSegmentSliderSpec.cpp +71 -63
- package/nitrogen/generated/android/c++/JHybridSegmentSliderSpec.hpp +24 -20
- package/nitrogen/generated/android/c++/views/JHybridSegmentSliderStateUpdater.cpp +81 -77
- package/nitrogen/generated/android/c++/views/JHybridSegmentSliderStateUpdater.hpp +4 -4
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/Func_void.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/Func_void_double.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/HybridSegmentSliderSpec.kt +25 -17
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/segmentsliderOnLoad.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/views/HybridSegmentSliderManager.kt +10 -40
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/views/HybridSegmentSliderStateUpdater.kt +1 -1
- package/nitrogen/generated/android/segmentslider+autolinking.cmake +1 -1
- package/nitrogen/generated/android/segmentslider+autolinking.gradle +1 -1
- package/nitrogen/generated/android/segmentsliderOnLoad.cpp +20 -30
- package/nitrogen/generated/android/segmentsliderOnLoad.hpp +5 -14
- package/nitrogen/generated/ios/SegmentSlider+autolinking.rb +2 -2
- package/nitrogen/generated/ios/SegmentSlider-Swift-Cxx-Bridge.cpp +1 -1
- package/nitrogen/generated/ios/SegmentSlider-Swift-Cxx-Bridge.hpp +3 -3
- package/nitrogen/generated/ios/SegmentSlider-Swift-Cxx-Umbrella.hpp +1 -1
- package/nitrogen/generated/ios/SegmentSliderAutolinking.mm +1 -1
- package/nitrogen/generated/ios/SegmentSliderAutolinking.swift +8 -9
- package/nitrogen/generated/ios/c++/HybridSegmentSliderSpecSwift.cpp +1 -1
- package/nitrogen/generated/ios/c++/HybridSegmentSliderSpecSwift.hpp +7 -7
- package/nitrogen/generated/ios/c++/views/HybridSegmentSliderComponent.mm +6 -27
- package/nitrogen/generated/ios/swift/Func_void.swift +2 -1
- package/nitrogen/generated/ios/swift/Func_void_double.swift +2 -1
- package/nitrogen/generated/ios/swift/HybridSegmentSliderSpec.swift +5 -3
- package/nitrogen/generated/ios/swift/HybridSegmentSliderSpec_cxx.swift +13 -18
- package/nitrogen/generated/shared/c++/HybridSegmentSliderSpec.cpp +3 -1
- package/nitrogen/generated/shared/c++/HybridSegmentSliderSpec.hpp +3 -1
- package/nitrogen/generated/shared/c++/views/HybridSegmentSliderComponent.cpp +46 -10
- package/nitrogen/generated/shared/c++/views/HybridSegmentSliderComponent.hpp +7 -9
- package/nitrogen/generated/shared/json/SegmentSliderConfig.json +1 -0
- package/package.json +4 -4
- package/src/SegmentSlider.nitro.ts +12 -1
package/README.md
CHANGED
|
@@ -15,6 +15,12 @@ once on mount), read live changes through `onChange`, and set the value
|
|
|
15
15
|
imperatively via the `setValue` method on the hybrid ref. This keeps reset/programmatic
|
|
16
16
|
updates off the Fabric prop-commit path and avoids any controlled-value-vs-drag conflict.
|
|
17
17
|
|
|
18
|
+
Set `alignSegmentMarksToIntegerValues` when an evenly divided segment lands on
|
|
19
|
+
a fractional value but the slider emits integers. Marks, tap snapping, hover
|
|
20
|
+
halos, and active states then share the same half-to-even integer values. For
|
|
21
|
+
example, `min={10}`, `max={100}`, and `segments={4}` use
|
|
22
|
+
`10 / 32 / 55 / 78 / 100`.
|
|
23
|
+
|
|
18
24
|
```tsx
|
|
19
25
|
import { useMemo, useRef } from 'react';
|
|
20
26
|
import {
|
|
@@ -30,8 +36,11 @@ type ISegmentSliderRef = HybridView<SegmentSliderProps, SegmentSliderMethods>;
|
|
|
30
36
|
|
|
31
37
|
const sliderRef = useRef<ISegmentSliderRef | null>(null);
|
|
32
38
|
const hybridRef = useMemo(
|
|
33
|
-
() =>
|
|
34
|
-
|
|
39
|
+
() =>
|
|
40
|
+
callback((node: ISegmentSliderRef) => {
|
|
41
|
+
sliderRef.current = node;
|
|
42
|
+
}),
|
|
43
|
+
[]
|
|
35
44
|
);
|
|
36
45
|
|
|
37
46
|
// Programmatically move the thumb (does NOT fire onChange):
|
|
@@ -49,6 +58,7 @@ const hybridRef = useMemo(
|
|
|
49
58
|
showBubble={true}
|
|
50
59
|
centerOrigin={false}
|
|
51
60
|
snapTapToSegment={true}
|
|
61
|
+
alignSegmentMarksToIntegerValues={false}
|
|
52
62
|
fillColor="#000000df"
|
|
53
63
|
trackColor="#0000001f"
|
|
54
64
|
thumbColor="#ffffff"
|
|
@@ -59,7 +69,7 @@ const hybridRef = useMemo(
|
|
|
59
69
|
bubbleColor="#000000df"
|
|
60
70
|
bubbleTextColor="#ffffff"
|
|
61
71
|
onChange={(nextValue) => console.log(nextValue)}
|
|
62
|
-
|
|
72
|
+
/>;
|
|
63
73
|
```
|
|
64
74
|
|
|
65
75
|
## Contributing
|
|
@@ -195,6 +195,10 @@ class HybridSegmentSlider(val context: ThemedReactContext) : HybridSegmentSlider
|
|
|
195
195
|
get() = field
|
|
196
196
|
set(v) { field = v }
|
|
197
197
|
|
|
198
|
+
override var alignSegmentMarksToIntegerValues: Boolean = false
|
|
199
|
+
get() = field
|
|
200
|
+
set(v) { field = v; invalidateIfAlive() }
|
|
201
|
+
|
|
198
202
|
override var fillColor: String = ""
|
|
199
203
|
get() = field
|
|
200
204
|
set(v) { field = v; cFill = parse(v); fillPaint.color = cFill; invalidateIfAlive() }
|
|
@@ -259,6 +263,29 @@ class HybridSegmentSlider(val context: ThemedReactContext) : HybridSegmentSlider
|
|
|
259
263
|
private val rangeSafe: Double get() = (max - min).let { if (it == 0.0) 1.0 else it }
|
|
260
264
|
private val markCount: Int get() = if (segments >= 1) segments.toInt() + 1 else 0
|
|
261
265
|
|
|
266
|
+
private fun segmentValue(index: Int): Double {
|
|
267
|
+
if (markCount <= 1) return min
|
|
268
|
+
val fraction = index.toDouble() / (markCount - 1)
|
|
269
|
+
val value = min + fraction * (max - min)
|
|
270
|
+
return if (alignSegmentMarksToIntegerValues) Math.rint(value) else value
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
private fun markFraction(index: Int): Float = valueToFrac(segmentValue(index))
|
|
274
|
+
|
|
275
|
+
private fun nearestMarkIndex(value: Double): Int {
|
|
276
|
+
val valueFraction = valueToFrac(value)
|
|
277
|
+
var nearestIndex = 0
|
|
278
|
+
var nearestDistance = Float.POSITIVE_INFINITY
|
|
279
|
+
for (index in 0 until markCount) {
|
|
280
|
+
val distance = Math.abs(valueFraction - markFraction(index))
|
|
281
|
+
if (distance <= nearestDistance) {
|
|
282
|
+
nearestDistance = distance
|
|
283
|
+
nearestIndex = index
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
return nearestIndex
|
|
287
|
+
}
|
|
288
|
+
|
|
262
289
|
/** True when tap-snapping should defer the value commit: enabled with marks to snap to. */
|
|
263
290
|
private val snapTapsActive: Boolean get() = snapTapToSegment && markCount > 1
|
|
264
291
|
|
|
@@ -277,10 +304,7 @@ class HybridSegmentSlider(val context: ThemedReactContext) : HybridSegmentSlider
|
|
|
277
304
|
|
|
278
305
|
/** Snaps a value to the value of the nearest segment mark. Caller guarantees `markCount > 1`. */
|
|
279
306
|
private fun snapValueToNearestMark(v: Double): Double {
|
|
280
|
-
|
|
281
|
-
val idx = Math.round(frac * (markCount - 1)).toDouble()
|
|
282
|
-
val snappedFrac = idx / (markCount - 1)
|
|
283
|
-
return min + snappedFrac * (max - min)
|
|
307
|
+
return segmentValue(nearestMarkIndex(v))
|
|
284
308
|
}
|
|
285
309
|
|
|
286
310
|
/** Hard re-sync: snap the thumb to [v], overriding any in-flight drag. */
|
|
@@ -321,7 +345,7 @@ class HybridSegmentSlider(val context: ThemedReactContext) : HybridSegmentSlider
|
|
|
321
345
|
var best = -1
|
|
322
346
|
var bestDist = threshold
|
|
323
347
|
for (i in 0 until markCount) {
|
|
324
|
-
val mf =
|
|
348
|
+
val mf = markFraction(i)
|
|
325
349
|
val mx = insetPx + mf * tw
|
|
326
350
|
val d = Math.abs(thumbX - mx)
|
|
327
351
|
if (d <= bestDist) { bestDist = d; best = i }
|
|
@@ -387,7 +411,7 @@ class HybridSegmentSlider(val context: ThemedReactContext) : HybridSegmentSlider
|
|
|
387
411
|
// Node halo (drag-time highlight) — drawn under the marks so the node dot
|
|
388
412
|
// stays crisp on top. Translucent markActive color (25% alpha).
|
|
389
413
|
if (isDragging && hoverMarkIndex in 0 until markCount) {
|
|
390
|
-
val mf =
|
|
414
|
+
val mf = markFraction(hoverMarkIndex)
|
|
391
415
|
val hx = insetPx + mf * tw
|
|
392
416
|
markHaloPaint.color = (cMarkActive and 0x00FFFFFF) or (0x3F shl 24)
|
|
393
417
|
canvas.drawCircle(hx, midY, markSizePx / 2f + haloRingPx, markHaloPaint)
|
|
@@ -397,7 +421,7 @@ class HybridSegmentSlider(val context: ThemedReactContext) : HybridSegmentSlider
|
|
|
397
421
|
val centerFrac = valueToFrac(0.0)
|
|
398
422
|
val markR = markSizePx / 2f
|
|
399
423
|
for (i in 0 until markCount) {
|
|
400
|
-
val markFrac =
|
|
424
|
+
val markFrac = markFraction(i)
|
|
401
425
|
val cx = insetPx + markFrac * tw
|
|
402
426
|
val active = when {
|
|
403
427
|
centerOrigin && currentValue == 0.0 -> false
|
|
@@ -86,6 +86,8 @@ final class HybridSegmentSlider: HybridSegmentSliderSpec {
|
|
|
86
86
|
var centerOrigin: Bool = false { didSet { scheduleLayout() } }
|
|
87
87
|
// Gates tap snapping only; no visual change on its own, so no didSet.
|
|
88
88
|
var snapTapToSegment: Bool = false
|
|
89
|
+
// Keeps marks and integer-emitting thumbs on the same value-derived geometry.
|
|
90
|
+
var alignSegmentMarksToIntegerValues: Bool = false { didSet { scheduleLayout() } }
|
|
89
91
|
|
|
90
92
|
var fillColor: String = "" {
|
|
91
93
|
didSet { cFill = parse(fillColor); fillLayer.backgroundColor = cFill; scheduleLayout() }
|
|
@@ -178,6 +180,33 @@ final class HybridSegmentSlider: HybridSegmentSliderSpec {
|
|
|
178
180
|
private var range: Double { let r = max - min; return r == 0 ? 1 : r }
|
|
179
181
|
private var markCount: Int { segments >= 1 ? Int(segments) + 1 : 0 }
|
|
180
182
|
|
|
183
|
+
private func segmentValue(at index: Int) -> Double {
|
|
184
|
+
guard markCount > 1 else { return min }
|
|
185
|
+
let fraction = Double(index) / Double(markCount - 1)
|
|
186
|
+
let value = min + fraction * (max - min)
|
|
187
|
+
return alignSegmentMarksToIntegerValues
|
|
188
|
+
? value.rounded(.toNearestOrEven)
|
|
189
|
+
: value
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
private func markFraction(at index: Int) -> CGFloat {
|
|
193
|
+
valueToFrac(segmentValue(at: index))
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
private func nearestMarkIndex(to value: Double) -> Int {
|
|
197
|
+
let valueFraction = valueToFrac(value)
|
|
198
|
+
var nearestIndex = 0
|
|
199
|
+
var nearestDistance = CGFloat.infinity
|
|
200
|
+
for index in 0..<markCount {
|
|
201
|
+
let distance = abs(valueFraction - markFraction(at: index))
|
|
202
|
+
if distance <= nearestDistance {
|
|
203
|
+
nearestDistance = distance
|
|
204
|
+
nearestIndex = index
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return nearestIndex
|
|
208
|
+
}
|
|
209
|
+
|
|
181
210
|
/// value -> fraction 0..1
|
|
182
211
|
private func valueToFrac(_ v: Double) -> CGFloat {
|
|
183
212
|
let clamped = Swift.max(min, Swift.min(max, v))
|
|
@@ -213,7 +242,7 @@ final class HybridSegmentSlider: HybridSegmentSliderSpec {
|
|
|
213
242
|
// Marks sit on the track line, centred vertically on it.
|
|
214
243
|
for i in 0..<markLayers.count {
|
|
215
244
|
let layer = markLayers[i]
|
|
216
|
-
let frac =
|
|
245
|
+
let frac = markFraction(at: i)
|
|
217
246
|
let cx = trackLeft + frac * trackWidth
|
|
218
247
|
layer.bounds = CGRect(x: 0, y: 0, width: markSize, height: markSize)
|
|
219
248
|
layer.position = CGPoint(x: cx, y: bounds.midY)
|
|
@@ -285,7 +314,7 @@ final class HybridSegmentSlider: HybridSegmentSliderSpec {
|
|
|
285
314
|
// Marks active states.
|
|
286
315
|
let centerFrac = valueToFrac(0)
|
|
287
316
|
for i in 0..<markLayers.count {
|
|
288
|
-
let markFrac =
|
|
317
|
+
let markFrac = markFraction(at: i)
|
|
289
318
|
var active: Bool
|
|
290
319
|
if centerOrigin {
|
|
291
320
|
if v == 0 {
|
|
@@ -339,7 +368,7 @@ final class HybridSegmentSlider: HybridSegmentSliderSpec {
|
|
|
339
368
|
var best = -1
|
|
340
369
|
var bestDist = threshold
|
|
341
370
|
for i in 0..<markCount {
|
|
342
|
-
let frac =
|
|
371
|
+
let frac = markFraction(at: i)
|
|
343
372
|
let mx = trackLeft + frac * trackWidth
|
|
344
373
|
let d = abs(thumbX - mx)
|
|
345
374
|
if d <= bestDist { bestDist = d; best = i }
|
|
@@ -359,7 +388,7 @@ final class HybridSegmentSlider: HybridSegmentSliderSpec {
|
|
|
359
388
|
CATransaction.begin()
|
|
360
389
|
CATransaction.setDisableActions(true)
|
|
361
390
|
if visible {
|
|
362
|
-
let frac =
|
|
391
|
+
let frac = markFraction(at: index)
|
|
363
392
|
let mx = trackLeft + frac * trackWidth
|
|
364
393
|
haloLayer.position = CGPoint(x: mx, y: view.bounds.midY)
|
|
365
394
|
haloLayer.backgroundColor = UIColor(cgColor: cMarkActive)
|
|
@@ -428,10 +457,7 @@ final class HybridSegmentSlider: HybridSegmentSliderSpec {
|
|
|
428
457
|
/// Snaps a value to the value of the nearest segment mark. Caller guarantees
|
|
429
458
|
/// `markCount > 1`.
|
|
430
459
|
private func snapValueToNearestMark(_ v: Double) -> Double {
|
|
431
|
-
|
|
432
|
-
let idx = (frac * Double(markCount - 1)).rounded()
|
|
433
|
-
let snappedFrac = idx / Double(markCount - 1)
|
|
434
|
-
return min + snappedFrac * (max - min)
|
|
460
|
+
segmentValue(at: nearestMarkIndex(to: v))
|
|
435
461
|
}
|
|
436
462
|
|
|
437
463
|
/// Hard re-sync: snap the thumb to `v`, overriding any in-flight drag. An
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/// JFunc_void.hpp
|
|
3
3
|
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
4
|
/// https://github.com/mrousavy/nitro
|
|
5
|
-
/// Copyright © Marc Rousavy @ Margelo
|
|
5
|
+
/// Copyright © 2026 Marc Rousavy @ Margelo
|
|
6
6
|
///
|
|
7
7
|
|
|
8
8
|
#pragma once
|
|
@@ -23,7 +23,7 @@ namespace margelo::nitro::segmentslider {
|
|
|
23
23
|
*/
|
|
24
24
|
struct JFunc_void: public jni::JavaClass<JFunc_void> {
|
|
25
25
|
public:
|
|
26
|
-
static constexpr
|
|
26
|
+
static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/segmentslider/Func_void;";
|
|
27
27
|
|
|
28
28
|
public:
|
|
29
29
|
/**
|
|
@@ -59,7 +59,7 @@ namespace margelo::nitro::segmentslider {
|
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
public:
|
|
62
|
-
static constexpr
|
|
62
|
+
static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/segmentslider/Func_void_cxx;";
|
|
63
63
|
static void registerNatives() {
|
|
64
64
|
registerHybrid({makeNativeMethod("invoke_cxx", JFunc_void_cxx::invoke_cxx)});
|
|
65
65
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/// JFunc_void_double.hpp
|
|
3
3
|
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
4
|
/// https://github.com/mrousavy/nitro
|
|
5
|
-
/// Copyright © Marc Rousavy @ Margelo
|
|
5
|
+
/// Copyright © 2026 Marc Rousavy @ Margelo
|
|
6
6
|
///
|
|
7
7
|
|
|
8
8
|
#pragma once
|
|
@@ -23,7 +23,7 @@ namespace margelo::nitro::segmentslider {
|
|
|
23
23
|
*/
|
|
24
24
|
struct JFunc_void_double: public jni::JavaClass<JFunc_void_double> {
|
|
25
25
|
public:
|
|
26
|
-
static constexpr
|
|
26
|
+
static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/segmentslider/Func_void_double;";
|
|
27
27
|
|
|
28
28
|
public:
|
|
29
29
|
/**
|
|
@@ -59,7 +59,7 @@ namespace margelo::nitro::segmentslider {
|
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
public:
|
|
62
|
-
static constexpr
|
|
62
|
+
static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/segmentslider/Func_void_double_cxx;";
|
|
63
63
|
static void registerNatives() {
|
|
64
64
|
registerHybrid({makeNativeMethod("invoke_cxx", JFunc_void_double_cxx::invoke_cxx)});
|
|
65
65
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/// JHybridSegmentSliderSpec.cpp
|
|
3
3
|
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
4
|
/// https://github.com/mrousavy/nitro
|
|
5
|
-
/// Copyright © Marc Rousavy @ Margelo
|
|
5
|
+
/// Copyright © 2026 Marc Rousavy @ Margelo
|
|
6
6
|
///
|
|
7
7
|
|
|
8
8
|
#include "JHybridSegmentSliderSpec.hpp"
|
|
@@ -18,198 +18,206 @@
|
|
|
18
18
|
|
|
19
19
|
namespace margelo::nitro::segmentslider {
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
auto castHybridObject = std::dynamic_pointer_cast<JHybridSegmentSliderSpec>(hybridObject);
|
|
24
|
-
if (castHybridObject == nullptr) [[unlikely]] {
|
|
25
|
-
throw std::runtime_error("Failed to downcast JHybridObject to JHybridSegmentSliderSpec!");
|
|
26
|
-
}
|
|
27
|
-
return castHybridObject;
|
|
21
|
+
jni::local_ref<JHybridSegmentSliderSpec::jhybriddata> JHybridSegmentSliderSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
|
|
22
|
+
return makeCxxInstance(jThis);
|
|
28
23
|
}
|
|
29
24
|
|
|
30
|
-
|
|
31
|
-
|
|
25
|
+
void JHybridSegmentSliderSpec::registerNatives() {
|
|
26
|
+
registerHybrid({
|
|
27
|
+
makeNativeMethod("initHybrid", JHybridSegmentSliderSpec::initHybrid),
|
|
28
|
+
});
|
|
32
29
|
}
|
|
33
30
|
|
|
34
|
-
|
|
35
|
-
auto
|
|
36
|
-
|
|
37
|
-
throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridSegmentSliderSpec::JavaPart!");
|
|
38
|
-
}
|
|
39
|
-
return std::make_shared<JHybridSegmentSliderSpec>(castJavaPart);
|
|
31
|
+
size_t JHybridSegmentSliderSpec::getExternalMemorySize() noexcept {
|
|
32
|
+
static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
|
|
33
|
+
return method(_javaPart);
|
|
40
34
|
}
|
|
41
35
|
|
|
42
|
-
void JHybridSegmentSliderSpec::
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
36
|
+
void JHybridSegmentSliderSpec::dispose() noexcept {
|
|
37
|
+
static const auto method = javaClassStatic()->getMethod<void()>("dispose");
|
|
38
|
+
method(_javaPart);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
std::string JHybridSegmentSliderSpec::toString() {
|
|
42
|
+
static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
|
|
43
|
+
auto javaString = method(_javaPart);
|
|
44
|
+
return javaString->toStdString();
|
|
46
45
|
}
|
|
47
46
|
|
|
48
47
|
// Properties
|
|
49
48
|
double JHybridSegmentSliderSpec::getDefaultValue() {
|
|
50
|
-
static const auto method =
|
|
49
|
+
static const auto method = javaClassStatic()->getMethod<double()>("getDefaultValue");
|
|
51
50
|
auto __result = method(_javaPart);
|
|
52
51
|
return __result;
|
|
53
52
|
}
|
|
54
53
|
void JHybridSegmentSliderSpec::setDefaultValue(double defaultValue) {
|
|
55
|
-
static const auto method =
|
|
54
|
+
static const auto method = javaClassStatic()->getMethod<void(double /* defaultValue */)>("setDefaultValue");
|
|
56
55
|
method(_javaPart, defaultValue);
|
|
57
56
|
}
|
|
58
57
|
double JHybridSegmentSliderSpec::getMin() {
|
|
59
|
-
static const auto method =
|
|
58
|
+
static const auto method = javaClassStatic()->getMethod<double()>("getMin");
|
|
60
59
|
auto __result = method(_javaPart);
|
|
61
60
|
return __result;
|
|
62
61
|
}
|
|
63
62
|
void JHybridSegmentSliderSpec::setMin(double min) {
|
|
64
|
-
static const auto method =
|
|
63
|
+
static const auto method = javaClassStatic()->getMethod<void(double /* min */)>("setMin");
|
|
65
64
|
method(_javaPart, min);
|
|
66
65
|
}
|
|
67
66
|
double JHybridSegmentSliderSpec::getMax() {
|
|
68
|
-
static const auto method =
|
|
67
|
+
static const auto method = javaClassStatic()->getMethod<double()>("getMax");
|
|
69
68
|
auto __result = method(_javaPart);
|
|
70
69
|
return __result;
|
|
71
70
|
}
|
|
72
71
|
void JHybridSegmentSliderSpec::setMax(double max) {
|
|
73
|
-
static const auto method =
|
|
72
|
+
static const auto method = javaClassStatic()->getMethod<void(double /* max */)>("setMax");
|
|
74
73
|
method(_javaPart, max);
|
|
75
74
|
}
|
|
76
75
|
double JHybridSegmentSliderSpec::getSegments() {
|
|
77
|
-
static const auto method =
|
|
76
|
+
static const auto method = javaClassStatic()->getMethod<double()>("getSegments");
|
|
78
77
|
auto __result = method(_javaPart);
|
|
79
78
|
return __result;
|
|
80
79
|
}
|
|
81
80
|
void JHybridSegmentSliderSpec::setSegments(double segments) {
|
|
82
|
-
static const auto method =
|
|
81
|
+
static const auto method = javaClassStatic()->getMethod<void(double /* segments */)>("setSegments");
|
|
83
82
|
method(_javaPart, segments);
|
|
84
83
|
}
|
|
85
84
|
double JHybridSegmentSliderSpec::getSliderHeight() {
|
|
86
|
-
static const auto method =
|
|
85
|
+
static const auto method = javaClassStatic()->getMethod<double()>("getSliderHeight");
|
|
87
86
|
auto __result = method(_javaPart);
|
|
88
87
|
return __result;
|
|
89
88
|
}
|
|
90
89
|
void JHybridSegmentSliderSpec::setSliderHeight(double sliderHeight) {
|
|
91
|
-
static const auto method =
|
|
90
|
+
static const auto method = javaClassStatic()->getMethod<void(double /* sliderHeight */)>("setSliderHeight");
|
|
92
91
|
method(_javaPart, sliderHeight);
|
|
93
92
|
}
|
|
94
93
|
bool JHybridSegmentSliderSpec::getDisabled() {
|
|
95
|
-
static const auto method =
|
|
94
|
+
static const auto method = javaClassStatic()->getMethod<jboolean()>("getDisabled");
|
|
96
95
|
auto __result = method(_javaPart);
|
|
97
96
|
return static_cast<bool>(__result);
|
|
98
97
|
}
|
|
99
98
|
void JHybridSegmentSliderSpec::setDisabled(bool disabled) {
|
|
100
|
-
static const auto method =
|
|
99
|
+
static const auto method = javaClassStatic()->getMethod<void(jboolean /* disabled */)>("setDisabled");
|
|
101
100
|
method(_javaPart, disabled);
|
|
102
101
|
}
|
|
103
102
|
bool JHybridSegmentSliderSpec::getShowBubble() {
|
|
104
|
-
static const auto method =
|
|
103
|
+
static const auto method = javaClassStatic()->getMethod<jboolean()>("getShowBubble");
|
|
105
104
|
auto __result = method(_javaPart);
|
|
106
105
|
return static_cast<bool>(__result);
|
|
107
106
|
}
|
|
108
107
|
void JHybridSegmentSliderSpec::setShowBubble(bool showBubble) {
|
|
109
|
-
static const auto method =
|
|
108
|
+
static const auto method = javaClassStatic()->getMethod<void(jboolean /* showBubble */)>("setShowBubble");
|
|
110
109
|
method(_javaPart, showBubble);
|
|
111
110
|
}
|
|
112
111
|
bool JHybridSegmentSliderSpec::getCenterOrigin() {
|
|
113
|
-
static const auto method =
|
|
112
|
+
static const auto method = javaClassStatic()->getMethod<jboolean()>("getCenterOrigin");
|
|
114
113
|
auto __result = method(_javaPart);
|
|
115
114
|
return static_cast<bool>(__result);
|
|
116
115
|
}
|
|
117
116
|
void JHybridSegmentSliderSpec::setCenterOrigin(bool centerOrigin) {
|
|
118
|
-
static const auto method =
|
|
117
|
+
static const auto method = javaClassStatic()->getMethod<void(jboolean /* centerOrigin */)>("setCenterOrigin");
|
|
119
118
|
method(_javaPart, centerOrigin);
|
|
120
119
|
}
|
|
121
120
|
bool JHybridSegmentSliderSpec::getSnapTapToSegment() {
|
|
122
|
-
static const auto method =
|
|
121
|
+
static const auto method = javaClassStatic()->getMethod<jboolean()>("getSnapTapToSegment");
|
|
123
122
|
auto __result = method(_javaPart);
|
|
124
123
|
return static_cast<bool>(__result);
|
|
125
124
|
}
|
|
126
125
|
void JHybridSegmentSliderSpec::setSnapTapToSegment(bool snapTapToSegment) {
|
|
127
|
-
static const auto method =
|
|
126
|
+
static const auto method = javaClassStatic()->getMethod<void(jboolean /* snapTapToSegment */)>("setSnapTapToSegment");
|
|
128
127
|
method(_javaPart, snapTapToSegment);
|
|
129
128
|
}
|
|
129
|
+
bool JHybridSegmentSliderSpec::getAlignSegmentMarksToIntegerValues() {
|
|
130
|
+
static const auto method = javaClassStatic()->getMethod<jboolean()>("getAlignSegmentMarksToIntegerValues");
|
|
131
|
+
auto __result = method(_javaPart);
|
|
132
|
+
return static_cast<bool>(__result);
|
|
133
|
+
}
|
|
134
|
+
void JHybridSegmentSliderSpec::setAlignSegmentMarksToIntegerValues(bool alignSegmentMarksToIntegerValues) {
|
|
135
|
+
static const auto method = javaClassStatic()->getMethod<void(jboolean /* alignSegmentMarksToIntegerValues */)>("setAlignSegmentMarksToIntegerValues");
|
|
136
|
+
method(_javaPart, alignSegmentMarksToIntegerValues);
|
|
137
|
+
}
|
|
130
138
|
std::string JHybridSegmentSliderSpec::getFillColor() {
|
|
131
|
-
static const auto method =
|
|
139
|
+
static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getFillColor");
|
|
132
140
|
auto __result = method(_javaPart);
|
|
133
141
|
return __result->toStdString();
|
|
134
142
|
}
|
|
135
143
|
void JHybridSegmentSliderSpec::setFillColor(const std::string& fillColor) {
|
|
136
|
-
static const auto method =
|
|
144
|
+
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* fillColor */)>("setFillColor");
|
|
137
145
|
method(_javaPart, jni::make_jstring(fillColor));
|
|
138
146
|
}
|
|
139
147
|
std::string JHybridSegmentSliderSpec::getTrackColor() {
|
|
140
|
-
static const auto method =
|
|
148
|
+
static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getTrackColor");
|
|
141
149
|
auto __result = method(_javaPart);
|
|
142
150
|
return __result->toStdString();
|
|
143
151
|
}
|
|
144
152
|
void JHybridSegmentSliderSpec::setTrackColor(const std::string& trackColor) {
|
|
145
|
-
static const auto method =
|
|
153
|
+
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* trackColor */)>("setTrackColor");
|
|
146
154
|
method(_javaPart, jni::make_jstring(trackColor));
|
|
147
155
|
}
|
|
148
156
|
std::string JHybridSegmentSliderSpec::getThumbColor() {
|
|
149
|
-
static const auto method =
|
|
157
|
+
static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getThumbColor");
|
|
150
158
|
auto __result = method(_javaPart);
|
|
151
159
|
return __result->toStdString();
|
|
152
160
|
}
|
|
153
161
|
void JHybridSegmentSliderSpec::setThumbColor(const std::string& thumbColor) {
|
|
154
|
-
static const auto method =
|
|
162
|
+
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* thumbColor */)>("setThumbColor");
|
|
155
163
|
method(_javaPart, jni::make_jstring(thumbColor));
|
|
156
164
|
}
|
|
157
165
|
std::string JHybridSegmentSliderSpec::getThumbBorderColor() {
|
|
158
|
-
static const auto method =
|
|
166
|
+
static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getThumbBorderColor");
|
|
159
167
|
auto __result = method(_javaPart);
|
|
160
168
|
return __result->toStdString();
|
|
161
169
|
}
|
|
162
170
|
void JHybridSegmentSliderSpec::setThumbBorderColor(const std::string& thumbBorderColor) {
|
|
163
|
-
static const auto method =
|
|
171
|
+
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* thumbBorderColor */)>("setThumbBorderColor");
|
|
164
172
|
method(_javaPart, jni::make_jstring(thumbBorderColor));
|
|
165
173
|
}
|
|
166
174
|
std::string JHybridSegmentSliderSpec::getMarkActiveColor() {
|
|
167
|
-
static const auto method =
|
|
175
|
+
static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getMarkActiveColor");
|
|
168
176
|
auto __result = method(_javaPart);
|
|
169
177
|
return __result->toStdString();
|
|
170
178
|
}
|
|
171
179
|
void JHybridSegmentSliderSpec::setMarkActiveColor(const std::string& markActiveColor) {
|
|
172
|
-
static const auto method =
|
|
180
|
+
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* markActiveColor */)>("setMarkActiveColor");
|
|
173
181
|
method(_javaPart, jni::make_jstring(markActiveColor));
|
|
174
182
|
}
|
|
175
183
|
std::string JHybridSegmentSliderSpec::getMarkInactiveColor() {
|
|
176
|
-
static const auto method =
|
|
184
|
+
static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getMarkInactiveColor");
|
|
177
185
|
auto __result = method(_javaPart);
|
|
178
186
|
return __result->toStdString();
|
|
179
187
|
}
|
|
180
188
|
void JHybridSegmentSliderSpec::setMarkInactiveColor(const std::string& markInactiveColor) {
|
|
181
|
-
static const auto method =
|
|
189
|
+
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* markInactiveColor */)>("setMarkInactiveColor");
|
|
182
190
|
method(_javaPart, jni::make_jstring(markInactiveColor));
|
|
183
191
|
}
|
|
184
192
|
std::string JHybridSegmentSliderSpec::getMarkBorderColor() {
|
|
185
|
-
static const auto method =
|
|
193
|
+
static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getMarkBorderColor");
|
|
186
194
|
auto __result = method(_javaPart);
|
|
187
195
|
return __result->toStdString();
|
|
188
196
|
}
|
|
189
197
|
void JHybridSegmentSliderSpec::setMarkBorderColor(const std::string& markBorderColor) {
|
|
190
|
-
static const auto method =
|
|
198
|
+
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* markBorderColor */)>("setMarkBorderColor");
|
|
191
199
|
method(_javaPart, jni::make_jstring(markBorderColor));
|
|
192
200
|
}
|
|
193
201
|
std::string JHybridSegmentSliderSpec::getBubbleColor() {
|
|
194
|
-
static const auto method =
|
|
202
|
+
static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getBubbleColor");
|
|
195
203
|
auto __result = method(_javaPart);
|
|
196
204
|
return __result->toStdString();
|
|
197
205
|
}
|
|
198
206
|
void JHybridSegmentSliderSpec::setBubbleColor(const std::string& bubbleColor) {
|
|
199
|
-
static const auto method =
|
|
207
|
+
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* bubbleColor */)>("setBubbleColor");
|
|
200
208
|
method(_javaPart, jni::make_jstring(bubbleColor));
|
|
201
209
|
}
|
|
202
210
|
std::string JHybridSegmentSliderSpec::getBubbleTextColor() {
|
|
203
|
-
static const auto method =
|
|
211
|
+
static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getBubbleTextColor");
|
|
204
212
|
auto __result = method(_javaPart);
|
|
205
213
|
return __result->toStdString();
|
|
206
214
|
}
|
|
207
215
|
void JHybridSegmentSliderSpec::setBubbleTextColor(const std::string& bubbleTextColor) {
|
|
208
|
-
static const auto method =
|
|
216
|
+
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* bubbleTextColor */)>("setBubbleTextColor");
|
|
209
217
|
method(_javaPart, jni::make_jstring(bubbleTextColor));
|
|
210
218
|
}
|
|
211
219
|
std::optional<std::function<void(double /* value */)>> JHybridSegmentSliderSpec::getOnChange() {
|
|
212
|
-
static const auto method =
|
|
220
|
+
static const auto method = javaClassStatic()->getMethod<jni::local_ref<JFunc_void_double::javaobject>()>("getOnChange_cxx");
|
|
213
221
|
auto __result = method(_javaPart);
|
|
214
222
|
return __result != nullptr ? std::make_optional([&]() -> std::function<void(double /* value */)> {
|
|
215
223
|
if (__result->isInstanceOf(JFunc_void_double_cxx::javaClassStatic())) [[likely]] {
|
|
@@ -222,11 +230,11 @@ namespace margelo::nitro::segmentslider {
|
|
|
222
230
|
}()) : std::nullopt;
|
|
223
231
|
}
|
|
224
232
|
void JHybridSegmentSliderSpec::setOnChange(const std::optional<std::function<void(double /* value */)>>& onChange) {
|
|
225
|
-
static const auto method =
|
|
233
|
+
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_double::javaobject> /* onChange */)>("setOnChange_cxx");
|
|
226
234
|
method(_javaPart, onChange.has_value() ? JFunc_void_double_cxx::fromCpp(onChange.value()) : nullptr);
|
|
227
235
|
}
|
|
228
236
|
std::optional<std::function<void()>> JHybridSegmentSliderSpec::getOnSlideStart() {
|
|
229
|
-
static const auto method =
|
|
237
|
+
static const auto method = javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>()>("getOnSlideStart_cxx");
|
|
230
238
|
auto __result = method(_javaPart);
|
|
231
239
|
return __result != nullptr ? std::make_optional([&]() -> std::function<void()> {
|
|
232
240
|
if (__result->isInstanceOf(JFunc_void_cxx::javaClassStatic())) [[likely]] {
|
|
@@ -239,11 +247,11 @@ namespace margelo::nitro::segmentslider {
|
|
|
239
247
|
}()) : std::nullopt;
|
|
240
248
|
}
|
|
241
249
|
void JHybridSegmentSliderSpec::setOnSlideStart(const std::optional<std::function<void()>>& onSlideStart) {
|
|
242
|
-
static const auto method =
|
|
250
|
+
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void::javaobject> /* onSlideStart */)>("setOnSlideStart_cxx");
|
|
243
251
|
method(_javaPart, onSlideStart.has_value() ? JFunc_void_cxx::fromCpp(onSlideStart.value()) : nullptr);
|
|
244
252
|
}
|
|
245
253
|
std::optional<std::function<void()>> JHybridSegmentSliderSpec::getOnSlideComplete() {
|
|
246
|
-
static const auto method =
|
|
254
|
+
static const auto method = javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>()>("getOnSlideComplete_cxx");
|
|
247
255
|
auto __result = method(_javaPart);
|
|
248
256
|
return __result != nullptr ? std::make_optional([&]() -> std::function<void()> {
|
|
249
257
|
if (__result->isInstanceOf(JFunc_void_cxx::javaClassStatic())) [[likely]] {
|
|
@@ -256,13 +264,13 @@ namespace margelo::nitro::segmentslider {
|
|
|
256
264
|
}()) : std::nullopt;
|
|
257
265
|
}
|
|
258
266
|
void JHybridSegmentSliderSpec::setOnSlideComplete(const std::optional<std::function<void()>>& onSlideComplete) {
|
|
259
|
-
static const auto method =
|
|
267
|
+
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void::javaobject> /* onSlideComplete */)>("setOnSlideComplete_cxx");
|
|
260
268
|
method(_javaPart, onSlideComplete.has_value() ? JFunc_void_cxx::fromCpp(onSlideComplete.value()) : nullptr);
|
|
261
269
|
}
|
|
262
270
|
|
|
263
271
|
// Methods
|
|
264
272
|
void JHybridSegmentSliderSpec::setValue(double value) {
|
|
265
|
-
static const auto method =
|
|
273
|
+
static const auto method = javaClassStatic()->getMethod<void(double /* value */)>("setValue");
|
|
266
274
|
method(_javaPart, value);
|
|
267
275
|
}
|
|
268
276
|
|