wzzc-dev/moui_sun/graphics does not have a README file
pub(open) trait Surface {
fn get_width(Self) -> Int
fn get_height(Self) -> Int
fn present_pixels(Self, width : Int, height : Int, row_bytes : Int, pixels : FixedArray[Byte]) -> Result[Unit, PresentError]
fn present_pixels_rect(Self, x : Int, y : Int, width : Int, height : Int, row_bytes : Int, pixels : FixedArray[Byte]) -> Result[Unit, PresentError]
}pub(all) enum BlendMode {
Clear
Source
Destination
SourceOver
DestinationOver
SourceIn
DestinationIn
SourceOut
DestinationOut
SourceAtop
DestinationAtop
Xor
Multiply
Screen
Add
Darken
Lighten
Difference
Exclusion
Overlay
HardLight
SoftLight
ColorDodge
ColorBurn
Hue
Saturation
Color
Luminosity
LinearBurn
Subtract
} derive(Eq, Debug)pub struct Canvas {
pixmap : Pixmap
transform : Transform
clip_rect : Rect?
state_stack : Array[CanvasState]
dirty_region : DirtyRegion
} derive(Debug)fn[S : Surface] Canvas::dirty_present_batch(self : Canvas, surface : S, max_rects : Int) -> Result[PresentBatch, PresentError]fn[S : Surface] Canvas::dirty_present_plan(self : Canvas, surface : S, max_rects : Int) -> DirtyPresentPlanfn Canvas::draw_nine_patch_pixmap(self : Canvas, src : Pixmap, x : Int, y : Int, width : Int, height : Int, insets : NinePatchInsets, paint : Paint, sampling : ImageSampling) -> Unitfn Canvas::draw_quality_nine_patch_pixmap(self : Canvas, src : Pixmap, x : Int, y : Int, width : Int, height : Int, insets : NinePatchInsets, paint : Paint, quality : ImageQuality) -> Unitfn Canvas::draw_quality_pixmap(self : Canvas, src : Pixmap, x : Int, y : Int, width : Int, height : Int, paint : Paint, quality : ImageQuality) -> Unitfn Canvas::draw_sampled_pixmap(self : Canvas, src : Pixmap, x : Int, y : Int, width : Int, height : Int, paint : Paint, sampling : ImageSampling) -> Unitfn Canvas::draw_transformed_quality_pixmap(self : Canvas, src : Pixmap, x : Double, y : Double, width : Double, height : Double, paint : Paint, quality : ImageQuality) -> Unitfn Canvas::draw_transformed_sampled_pixmap(self : Canvas, src : Pixmap, x : Double, y : Double, width : Double, height : Double, paint : Paint, sampling : ImageSampling) -> Unitfn[S : Surface] Canvas::present_dirty_to_with_limit(self : Canvas, surface : S, max_rects : Int) -> Result[Int, PresentError]fn DirtyPresentPlan::get_present_strategy(self : DirtyPresentPlan, width : Int, height : Int) -> DirtyPresentStrategyfn DirtyPresentPlan::saves_full_present_pixels(self : DirtyPresentPlan, width : Int, height : Int) -> Boolfn DirtyRegion::present_plan(self : DirtyRegion, bounds : PixelRect, max_rects : Int) -> DirtyPresentPlanfn DirtyRegion::present_rects(self : DirtyRegion, bounds : PixelRect, max_rects : Int) -> Array[PixelRect]pub struct DirtySubmitPlan {
dirty_bounds : PixelRect?
present_plan : DirtyPresentPlan
} derive(Debug)fn DirtySubmitPlan::get_present_strategy(self : DirtySubmitPlan, width : Int, height : Int) -> DirtyPresentStrategyfn DirtySubmitPlan::saves_full_present_pixels(self : DirtySubmitPlan, width : Int, height : Int) -> Boolpub struct DirtySubmitResult {
submit_plan : DirtySubmitPlan
presented_rect_count : Int
} derive(Debug)fn DirtySubmitResult::get_present_strategy(self : DirtySubmitResult, width : Int, height : Int) -> DirtyPresentStrategyfn DirtySubmitResult::saves_full_present_pixels(self : DirtySubmitResult, width : Int, height : Int) -> Boolpub struct Layer {
canvas : Canvas
x : Int
y : Int
visible : Bool
opacity : Double
blend_mode : BlendMode
shader : PaintShader?
filter : PaintFilter?
} derive(Debug)fn Layer::composite_dirty_to_result(self : Layer, target : Canvas, max_rects : Int) -> LayerCompositeResultfn[S : Surface] LayerTree::dirty_present_batch(self : LayerTree, target : Canvas, surface : S, max_rects : Int) -> Result[PresentBatch, PresentError]fn[S : Surface] LayerTree::dirty_present_plan(self : LayerTree, target : Canvas, surface : S, max_rects : Int) -> DirtyPresentPlanfn[S : Surface] LayerTree::dirty_submit_plan(self : LayerTree, target : Canvas, surface : S, max_rects : Int) -> DirtySubmitPlanfn[S : Surface] LayerTree::present_all_to(self : LayerTree, target : Canvas, surface : S) -> Result[Int, PresentError]fn[S : Surface] LayerTree::present_all_to_with_limit(self : LayerTree, target : Canvas, surface : S, max_rects : Int) -> Result[Int, PresentError]fn[S : Surface] LayerTree::present_dirty_to(self : LayerTree, target : Canvas, surface : S) -> Result[Int, PresentError]fn[S : Surface] LayerTree::present_dirty_to_with_limit(self : LayerTree, target : Canvas, surface : S, max_rects : Int) -> Result[Int, PresentError]fn[S : Surface] LayerTree::redraw_schedule(self : LayerTree, target : Canvas, surface : S, max_rects : Int) -> RenderFrameSchedulefn[S : Surface] LayerTree::submit_by_strategy_plan(self : LayerTree, target : Canvas, surface : S, max_rects : Int) -> RenderFrameSubmitPlanfn[S : Surface] LayerTree::submit_dirty_to(self : LayerTree, target : Canvas, surface : S) -> Result[DirtySubmitResult, PresentError]fn[S : Surface] LayerTree::submit_dirty_to_with_limit(self : LayerTree, target : Canvas, surface : S, max_rects : Int) -> Result[DirtySubmitResult, PresentError]fn[S : Surface] LayerTree::submit_request_by_policy(self : LayerTree, target : Canvas, surface : S, max_rects : Int, policy : RenderFrameSubmitPolicy) -> RenderFrameSubmitRequestfn[S : Surface] LayerTree::submit_request_to(self : LayerTree, target : Canvas, surface : S, request : RenderFrameSubmitRequest) -> Result[RenderFrameSubmitResult, PresentError]fn[S : Surface] LayerTree::submit_request_to_with_limit(self : LayerTree, target : Canvas, surface : S, max_rects : Int, request : RenderFrameSubmitRequest) -> Result[RenderFrameSubmitResult, PresentError]fn[S : Surface] LayerTree::submit_schedule(self : LayerTree, target : Canvas, surface : S, max_rects : Int) -> RenderFrameSchedulefn[S : Surface] LayerTree::submit_schedule_by_policy(self : LayerTree, target : Canvas, surface : S, max_rects : Int, policy : RenderFrameSubmitPolicy) -> RenderFrameSchedulefn[S : Surface] LayerTree::submit_scheduled_to(self : LayerTree, target : Canvas, surface : S, schedule : RenderFrameSchedule) -> Result[RenderFrameSubmitResult, PresentError]fn[S : Surface] LayerTree::submit_scheduled_to_with_limit(self : LayerTree, target : Canvas, surface : S, max_rects : Int, schedule : RenderFrameSchedule) -> Result[RenderFrameSubmitResult, PresentError]fn[S : Surface] LayerTree::submit_to_by_policy(self : LayerTree, target : Canvas, surface : S, policy : RenderFrameSubmitPolicy) -> Result[RenderFrameSubmitResult, PresentError]fn[S : Surface] LayerTree::submit_to_by_policy_with_limit(self : LayerTree, target : Canvas, surface : S, max_rects : Int, policy : RenderFrameSubmitPolicy) -> Result[RenderFrameSubmitResult, PresentError]pub struct MemorySurface {
width : Int
height : Int
pixels : FixedArray[Byte]
present_count : Int
present_records : Array[MemoryPresentRecord]
} derive(Debug)impl Surface for MemorySurfacefn present_pixels(self : MemorySurface, width : Int, height : Int, row_bytes : Int, pixels : FixedArray[Byte]) -> Result[Unit, PresentError]fn present_pixels_rect(self : MemorySurface, x : Int, y : Int, width : Int, height : Int, row_bytes : Int, pixels : FixedArray[Byte]) -> Result[Unit, PresentError]fn MemorySurface::checksum_rect(self : MemorySurface, rect : PixelRect) -> Result[Int, PresentError]fn MemorySurface::present_pixels(self : MemorySurface, width : Int, height : Int, row_bytes : Int, pixels : FixedArray[Byte]) -> Result[Unit, PresentError]fn MemorySurface::present_pixels_rect(self : MemorySurface, x : Int, y : Int, width : Int, height : Int, row_bytes : Int, pixels : FixedArray[Byte]) -> Result[Unit, PresentError]fn MemorySurface::to_bmp_rect_bytes(self : MemorySurface, rect : PixelRect) -> Result[Bytes, PresentError]fn MemorySurface::to_pixmap_rect(self : MemorySurface, rect : PixelRect) -> Result[Pixmap, PresentError]fn MemorySurface::to_png_rect_bytes(self : MemorySurface, rect : PixelRect) -> Result[Bytes, PresentError]fn MemorySurface::to_ppm_rect_bytes(self : MemorySurface, rect : PixelRect) -> Result[Bytes, PresentError]fn MemorySurface::to_rgba_rect_bytes(self : MemorySurface, rect : PixelRect) -> Result[Bytes, PresentError]pub struct Paint {
color : Color
shader : PaintShader?
filter : PaintFilter?
style : PaintStyle
blend_mode : BlendMode
stroke_width : Double
stroke_cap : StrokeCap
stroke_join : StrokeJoin
miter_limit : Double
stroke_dash_pattern : Array[Double]
stroke_dash_offset : Double
fill_rule : FillRule
opacity : Double
} derive(Debug)fn PaintShader::linear_gradient(x0~ : Double, y0~ : Double, x1~ : Double, y1~ : Double, start_color~ : Color, end_color~ : Color, spread? : PaintShaderSpread) -> PaintShaderfn PaintShader::linear_gradient_stops(x0~ : Double, y0~ : Double, x1~ : Double, y1~ : Double, stops~ : Array[PaintGradientStop], spread? : PaintShaderSpread) -> PaintShaderfn PaintShader::radial_gradient(cx~ : Double, cy~ : Double, radius~ : Double, start_color~ : Color, end_color~ : Color, spread? : PaintShaderSpread) -> PaintShaderfn PaintShader::radial_gradient_stops(cx~ : Double, cy~ : Double, radius~ : Double, stops~ : Array[PaintGradientStop], spread? : PaintShaderSpread) -> PaintShaderfn PaintShader::sweep_gradient(cx~ : Double, cy~ : Double, start_angle~ : Double, sweep_angle~ : Double, start_color~ : Color, end_color~ : Color, spread? : PaintShaderSpread) -> PaintShaderfn PaintShader::sweep_gradient_stops(cx~ : Double, cy~ : Double, start_angle~ : Double, sweep_angle~ : Double, stops~ : Array[PaintGradientStop], spread? : PaintShaderSpread) -> PaintShaderpub struct Path {
segments : Array[PathSegment]
current_x : Double
current_y : Double
start_x : Double
start_y : Double
} derive(Debug)fn Pixmap::blend_nine_patch_pixmap(self : Pixmap, x : Int, y : Int, width : Int, height : Int, src : Pixmap, insets : NinePatchInsets, opacity : Double, sampling : ImageSampling) -> Unitfn Pixmap::blend_quality_nine_patch_pixmap(self : Pixmap, x : Int, y : Int, width : Int, height : Int, src : Pixmap, insets : NinePatchInsets, opacity : Double, quality : ImageQuality) -> Unitfn Pixmap::blend_quality_pixmap(self : Pixmap, x : Int, y : Int, width : Int, height : Int, src : Pixmap, opacity : Double, quality : ImageQuality) -> Unitfn Pixmap::blend_quality_pixmap_rect(self : Pixmap, x : Int, y : Int, width : Int, height : Int, src : Pixmap, src_rect : PixelRect, opacity : Double, quality : ImageQuality) -> Unitfn Pixmap::blend_sampled_pixmap(self : Pixmap, x : Int, y : Int, width : Int, height : Int, src : Pixmap, opacity : Double, sampling : ImageSampling) -> Unitfn Pixmap::blend_sampled_pixmap_rect(self : Pixmap, x : Int, y : Int, width : Int, height : Int, src : Pixmap, src_rect : PixelRect, opacity : Double, sampling : ImageSampling) -> Unitfn Pixmap::from_rgba_bytes(width : Int, height : Int, data : Bytes) -> Result[Pixmap, PixmapDecodeError]fn Pixmap::present_batch(self : Pixmap, plan : DirtyPresentPlan) -> Result[PresentBatch, PresentError]fn Pixmap::present_rect_payload(self : Pixmap, rect : PixelRect) -> Result[PresentRectPayload, PresentError]fn[S : Surface] Pixmap::present_rect_to(self : Pixmap, surface : S, rect : PixelRect) -> Result[Unit, PresentError]fn PixmapCache::get_or_decode_bmp(self : PixmapCache, key : String, data : Bytes) -> Result[Pixmap, PixmapDecodeError]fn PixmapCache::get_or_decode_bmp_result(self : PixmapCache, key : String, data : Bytes) -> Result[PixmapCacheDecodeResult, PixmapDecodeError]fn PixmapCache::get_or_decode_png(self : PixmapCache, key : String, data : Bytes) -> Result[Pixmap, PixmapDecodeError]fn PixmapCache::get_or_decode_png_result(self : PixmapCache, key : String, data : Bytes) -> Result[PixmapCacheDecodeResult, PixmapDecodeError]fn PixmapCache::get_or_decode_rgba(self : PixmapCache, key : String, width : Int, height : Int, data : Bytes) -> Result[Pixmap, PixmapDecodeError]fn PixmapCache::get_or_decode_rgba_result(self : PixmapCache, key : String, width : Int, height : Int, data : Bytes) -> Result[PixmapCacheDecodeResult, PixmapDecodeError]fn PixmapCache::get_or_insert_result(self : PixmapCache, key : String, pixmap : Pixmap) -> PixmapCacheInsertResultpub(all) enum PixmapDecodeError {
UnexpectedEndOfData(Int, Int, Int)
InvalidRgbaDimensions(Int, Int)
RgbaByteLengthMismatch(Int, Int)
InvalidBmpSignature(Byte, Byte)
UnsupportedBmpHeaderSize(Int)
UnsupportedBmpColorPlanes(Int)
UnsupportedBmpBitsPerPixel(Int)
UnsupportedBmpCompression(Int)
InvalidBmpDimensions(Int, Int)
BmpPixelDataOutOfBounds(Int, Int, Int)
InvalidPngSignature
MissingPngImageHeader
MissingPngImageData
MissingPngImageEnd
UnsupportedPngHeaderSize(Int)
UnsupportedPngBitDepth(Int)
UnsupportedPngColorType(Int)
UnsupportedPngCompression(Int)
UnsupportedPngFilter(Int)
UnsupportedPngInterlace(Int)
UnsupportedPngChunk(Int, Int, Int, Int)
UnsupportedPngDeflateCompression(Int)
UnsupportedPngDeflatePresetDictionary
UnsupportedPngDeflateBlockType(Int)
InvalidPngDeflateCode
UnsupportedPngFilterType(Int)
InvalidPngDimensions(Int, Int)
InvalidPngZlibHeader(Int, Int)
PngCrcMismatch(UInt, UInt)
PngAdlerMismatch(UInt, UInt)
PngStoredBlockLengthMismatch(Int, Int)
PngInflateLengthMismatch(Int, Int)
PngScanlineLengthMismatch(Int, Int)
} derive(Eq, Debug)pub struct PresentBatch {
payloads : Array[PresentRectPayload]
present_pixel_count : Int
present_byte_count : Int
} derive(Debug)fn PresentBatch::get_full_present_byte_savings(self : PresentBatch, width : Int, height : Int) -> Intfn PresentBatch::get_full_present_pixel_savings(self : PresentBatch, width : Int, height : Int) -> Intfn PresentBatch::get_present_strategy(self : PresentBatch, width : Int, height : Int) -> DirtyPresentStrategyfn[S : Surface] PresentBatch::submit_plan_for(self : PresentBatch, surface : S) -> Result[PresentBatchSubmitPlan, PresentError]fn[S : Surface] PresentBatch::submit_to(self : PresentBatch, surface : S) -> Result[Int, PresentError]fn[S : Surface] PresentBatch::submit_to_result(self : PresentBatch, surface : S) -> Result[PresentBatchSubmitResult, PresentError]fn[S : Surface] PresentBatch::validate_for(self : PresentBatch, surface : S) -> Result[Unit, PresentError]pub struct PresentBatchSubmitPlan {
batch : PresentBatch
surface_width : Int
surface_height : Int
} derive(Debug)fn PresentBatchSubmitPlan::get_present_strategy(self : PresentBatchSubmitPlan) -> DirtyPresentStrategyfn[S : Surface] PresentBatchSubmitPlan::submit_to(self : PresentBatchSubmitPlan, surface : S) -> Result[Int, PresentError]fn[S : Surface] PresentBatchSubmitPlan::submit_to_result(self : PresentBatchSubmitPlan, surface : S) -> Result[PresentBatchSubmitResult, PresentError]pub struct PresentBatchSubmitResult {
submit_plan : PresentBatchSubmitPlan
presented_rect_count : Int
} derive(Debug)fn PresentBatchSubmitResult::get_present_strategy(self : PresentBatchSubmitResult) -> DirtyPresentStrategyfn PresentBatchSubmitResult::get_submit_plan(self : PresentBatchSubmitResult) -> PresentBatchSubmitPlanfn PresentRectPayload::new(rect : PixelRect, row_bytes : Int, pixels : FixedArray[Byte]) -> Result[PresentRectPayload, PresentError]fn[S : Surface] PresentRectPayload::submit_to(self : PresentRectPayload, surface : S) -> Result[Unit, PresentError]fn[S : Surface] RenderFrame::dirty_present_batch(self : RenderFrame, surface : S) -> Result[PresentBatch, PresentError]fn[S : Surface] RenderFrame::dirty_present_plan(self : RenderFrame, surface : S) -> DirtyPresentPlanfn[S : Surface] RenderFrame::present_all_to(self : RenderFrame, surface : S) -> Result[Int, PresentError]fn[S : Surface] RenderFrame::present_dirty_to(self : RenderFrame, surface : S) -> Result[Int, PresentError]fn[S : Surface] RenderFrame::present_strategy(self : RenderFrame, surface : S) -> DirtyPresentStrategyfn[S : Surface] RenderFrame::redraw_schedule(self : RenderFrame, surface : S) -> RenderFrameSchedulefn RenderFrame::replace_layers(self : RenderFrame, requests : Array[RenderFrameLayerReplacementRequest]) -> Boolfn RenderFrame::resize_and_clear_layer(self : RenderFrame, layer_index : Int, width : Int, height : Int, color : Color) -> Boolfn RenderFrame::resize_and_clear_layers(self : RenderFrame, width : Int, height : Int, requests : Array[RenderFrameLayerClearRequest]) -> Boolfn RenderFrame::resize_clear_and_replace_layers(self : RenderFrame, width : Int, height : Int, clear_requests : Array[RenderFrameLayerClearRequest], replacement_requests : Array[RenderFrameLayerReplacementRequest]) -> Boolfn[S : Surface] RenderFrame::submit_by_strategy_plan(self : RenderFrame, surface : S) -> RenderFrameSubmitPlanfn[S : Surface] RenderFrame::submit_by_strategy_to(self : RenderFrame, surface : S) -> Result[RenderFrameSubmitResult, PresentError]fn[S : Surface] RenderFrame::submit_dirty_to(self : RenderFrame, surface : S) -> Result[DirtySubmitResult, PresentError]fn[S : Surface] RenderFrame::submit_redraw_to(self : RenderFrame, surface : S) -> Result[RenderFrameSubmitResult, PresentError]fn[S : Surface] RenderFrame::submit_request_by_policy(self : RenderFrame, surface : S, policy : RenderFrameSubmitPolicy) -> RenderFrameSubmitRequestfn[S : Surface] RenderFrame::submit_request_to(self : RenderFrame, surface : S, request : RenderFrameSubmitRequest) -> Result[RenderFrameSubmitResult, PresentError]fn[S : Surface] RenderFrame::submit_schedule(self : RenderFrame, surface : S) -> RenderFrameSchedulefn[S : Surface] RenderFrame::submit_schedule_by_policy(self : RenderFrame, surface : S, policy : RenderFrameSubmitPolicy) -> RenderFrameSchedulefn[S : Surface] RenderFrame::submit_scheduled_to(self : RenderFrame, surface : S, schedule : RenderFrameSchedule) -> Result[RenderFrameSubmitResult, PresentError]fn[S : Surface] RenderFrame::submit_to_by_policy(self : RenderFrame, surface : S, policy : RenderFrameSubmitPolicy) -> Result[RenderFrameSubmitResult, PresentError]fn RenderFrameLayerClearRequest::equal(RenderFrameLayerClearRequest, RenderFrameLayerClearRequest) -> Boolfn RenderFrameLayerClearRequest::new(layer_index : Int, color : Color) -> RenderFrameLayerClearRequestfn RenderFrameLayerClearRequest::not_equal(x : RenderFrameLayerClearRequest, y : RenderFrameLayerClearRequest) -> Boolfn RenderFrameLayerReplacementRequest::get_layer(self : RenderFrameLayerReplacementRequest) -> Layerfn RenderFrameLayerReplacementRequest::get_layer_index(self : RenderFrameLayerReplacementRequest) -> Intfn RenderFrameLayerReplacementRequest::new(layer_index : Int, layer : Layer) -> RenderFrameLayerReplacementRequestpub struct RenderFrameSchedule {
submit_plan : RenderFrameSubmitPlan
action : RenderFrameScheduleAction
} derive(Debug)fn RenderFrameScheduleAction::not_equal(x : RenderFrameScheduleAction, y : RenderFrameScheduleAction) -> Boolpub struct RenderFrameSubmitPlan {
dirty_submit_plan : DirtySubmitPlan
strategy : DirtyPresentStrategy
present_bounds : PixelRect?
present_rect_count : Int
present_pixel_count : Int
present_byte_count : Int
} derive(Debug)fn RenderFrameSubmitPlan::get_present_strategy(self : RenderFrameSubmitPlan) -> DirtyPresentStrategyfn RenderFrameSubmitPolicy::not_equal(x : RenderFrameSubmitPolicy, y : RenderFrameSubmitPolicy) -> Boolpub struct RenderFrameSubmitRequest {
policy : RenderFrameSubmitPolicy
schedule : RenderFrameSchedule
} derive(Debug)fn RenderFrameSubmitRequest::get_action(self : RenderFrameSubmitRequest) -> RenderFrameScheduleActionfn RenderFrameSubmitRequest::get_present_strategy(self : RenderFrameSubmitRequest) -> DirtyPresentStrategyfn RenderFrameSubmitRequest::get_submit_plan(self : RenderFrameSubmitRequest) -> RenderFrameSubmitPlanfn RenderFrameSubmitRequest::new(policy : RenderFrameSubmitPolicy, schedule : RenderFrameSchedule) -> RenderFrameSubmitRequestpub struct RenderFrameSubmitResult {
submit_plan : RenderFrameSubmitPlan
presented_rect_count : Int
} derive(Debug)fn RenderFrameSubmitResult::get_present_strategy(self : RenderFrameSubmitResult) -> DirtyPresentStrategyfn RenderFrameSubmitResult::get_submit_plan(self : RenderFrameSubmitResult) -> RenderFrameSubmitPlanpub struct ScanlineRasterizer {
width : Int
height : Int
pixels : FixedArray[Byte]
}fn ScanlineRasterizer::draw_line(self : ScanlineRasterizer, x0 : Int, y0 : Int, x1 : Int, y1 : Int, color : Color) -> Unitfn ScanlineRasterizer::fill_polygon(self : ScanlineRasterizer, points : Array[(Double, Double)], color : Color) -> Unitfn ScanlineRasterizer::fill_triangle(self : ScanlineRasterizer, x0 : Double, y0 : Double, x1 : Double, y1 : Double, x2 : Double, y2 : Double, color : Color) -> Unitfn[S : Surface] present_pixels(surface : S, width : Int, height : Int, row_bytes : Int, pixels : FixedArray[Byte]) -> Result[Unit, PresentError]fn[S : Surface] present_pixels_rect(surface : S, x : Int, y : Int, width : Int, height : Int, row_bytes : Int, pixels : FixedArray[Byte]) -> Result[Unit, PresentError]fn validate_present_rect(surface_width : Int, surface_height : Int, x : Int, y : Int, width : Int, height : Int, row_bytes : Int, pixels : FixedArray[Byte]) -> Result[PresentRectInfo, PresentError]Install
Download zipExperimental MoonBit-native CPU raster stack for MoUI
Dependencies