MoonBit bindings for the Skia Graphics Library
cd scripts/native_smoke
moon run --target native ..\scripts\check-fallback.ps1bash scripts/fetch-jetbrains-skia.sh --platform auto --arch auto --print-env.\scripts\fetch-jetbrains-skia.ps1 -Platform auto -Arch auto -PrintEnv.\scripts\windows-accept-real-skia-smoke.ps1 -LogDir logs `
-SkiaInclude C:\path\to\skia `
-SkiaLibDir C:\path\to\skia\out\Staticbash scripts/linux-accept-real-skia-smoke.sh --log-dir logs \
--skia-provider existing \
--skia-include /path/to/skia \
--skia-lib-dir /path/to/skia/out/Staticbash scripts/macos-accept-real-skia-smoke.sh --log-dir logs \
--skia-provider existing \
--skia-include /path/to/skia \
--skia-lib-dir /path/to/skia/out/Staticbash scripts/macos-accept-real-skia-smoke.sh --log-dir logs \
--skia-provider source \
--work-dir .skia-cache/macosbash scripts/install-linux-smoke-deps.sh
bash scripts/linux-accept-real-skia-smoke.sh --work-dir .skia-cache/linuxbash scripts/linux-accept-and-pin-skia.sh --work-dir .skia-cache/linux///|
test {
let info = @skia_mbt.ImageInfo::n32_premul(@skia_mbt.ISize::new(1, 1))
let pixmap = @skia_mbt.Pixmap::new(info, 4, b"\xff\x00\x00\xff")
assert_true(pixmap is Some(_))
assert_eq(info.shift_per_pixel(), 2)
assert_eq(info.compute_min_byte_size64(), 4L)
}///|
test {
let paint = @skia_mbt.Paint::new(
color=@skia_mbt.Color::from_rgb(0xff, 0, 0),
anti_alias=true,
)
.set_stroke(true)
.set_stroke_width(4)
let path = @skia_mbt.Path::new().add_rect(
@skia_mbt.Rect::from_xywh(0, 0, 8, 8),
)
assert_true(paint.style == @skia_mbt.Stroke)
assert_true(paint.color == @skia_mbt.Color::red())
assert_true(
path.stroke_bounds(paint) == Some(@skia_mbt.Rect::new(-2, -2, 10, 10)),
)
}///|
test {
let sampling = @skia_mbt.SamplingOptions::new(
filter=@skia_mbt.FilterMode::Linear,
mipmap=@skia_mbt.MipmapMode::Linear,
)
assert_eq(sampling.filter_ordinal(), 1)
assert_eq(sampling.mipmap_ordinal(), 2)
assert_true(!sampling.uses_cubic())
}///|
test {
let matrix = @skia_mbt.Matrix::translate(10, 20).concat(
@skia_mbt.Matrix::scale(2, 3),
)
let rect = matrix.map_rect(@skia_mbt.Rect::from_xywh(0, 0, 4, 5))
assert_true(matrix.is_invertible())
assert_true(rect == @skia_mbt.Rect::from_xywh(10, 20, 8, 15))
}///|
test {
let path = @skia_mbt.Path::new(fill_type=@skia_mbt.EvenOdd).add_circle(
@skia_mbt.Point::new(5, 5),
5,
direction=@skia_mbt.CCW,
)
let shifted = path.offset(10, 20)
assert_eq(path.verb_count(), 6)
assert_true(path.fill_type == @skia_mbt.EvenOdd)
assert_true(
shifted.bounds() == Some(@skia_mbt.Rect::from_xywh(10, 20, 10, 10)),
)
}///|
test {
let rrect = @skia_mbt.RRect::new(
@skia_mbt.Rect::from_xywh(0, 0, 10, 8),
@skia_mbt.Size::new(2, 2),
@skia_mbt.Size::new(3, 1),
@skia_mbt.Size::new(1, 2),
@skia_mbt.Size::empty(),
)
let path = @skia_mbt.Path::new().add_rrect(rrect)
assert_true(!rrect.is_rect())
assert_eq(path.verb_count(), 10)
assert_true(path.bounds() == Some(rrect.bounds()))
}impl Default for EncodedImageFormatimpl Default for FilterModeimpl Default for MipmapModepub(all) struct Paint {
color : Color
anti_alias : Bool
dither : Bool
style : PaintStyle
stroke_width : Float
stroke_miter : Float
stroke_cap : StrokeCap
stroke_join : StrokeJoin
blend_mode : BlendMode
} derive(Eq, Debug)fn Paint::new(color? : Color, anti_alias? : Bool, dither? : Bool, style? : PaintStyle, stroke_width? : Float, stroke_miter? : Float, stroke_cap? : StrokeCap, stroke_join? : StrokeJoin, blend_mode? : BlendMode) -> Paintimpl Default for PaintStylefn Path::add_circle(self : Path, center : Point, radius : Float, direction? : PathDirection) -> Pathfn Path::add_round_rect(self : Path, rect : Rect, rx : Float, ry : Float, direction? : PathDirection) -> Pathimpl Default for PathDirectionimpl Default for PathFillTypepub(all) struct PathRect {
rect : Rect
is_closed : Bool
direction : PathDirection
} derive(Eq, Debug)pub(all) struct SamplingOptions {
filter : FilterMode
mipmap : MipmapMode
cubic : CubicResampler?
} derive(Eq, Debug)impl Default for SamplingOptionsimpl Default for StrokeJoinfn binding_status() -> String