System, Display, Graphics, Sprite, Sound, File, JSON, Lua, Scoreboards, Network, Rect, SystemEvent, and AccessReply now live at module scope instead of being nested in the Playdate enum; consumers write System.log(...) instead of Playdate.System.log(...), and can qualify with the module name (PlayDate.System) on collision. The Playdate enum remains only as the raw C API bootstrap (initialize(with:), api, apiPointer), and Playdate.Error is renamed PlaydateError so no top-level type shadows Swift.Error. Breaking change for any existing consumers. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
58 lines
2.0 KiB
Swift
58 lines
2.0 KiB
Swift
//
|
|
// Display.swift
|
|
// Wraps `playdate->display` (pd_api_display.h).
|
|
//
|
|
|
|
internal import CPlaydate
|
|
|
|
/// The display API: resolution, refresh rate, scaling, and effects.
|
|
public enum Display {}
|
|
|
|
extension Display {
|
|
private static var api: playdate_display { Playdate.api.display.pointee }
|
|
|
|
/// The display width in pixels, taking the current scale into account.
|
|
public static var width: Int { Int(api.getWidth.unsafelyUnwrapped()) }
|
|
|
|
/// The display height in pixels, taking the current scale into account.
|
|
public static var height: Int { Int(api.getHeight.unsafelyUnwrapped()) }
|
|
|
|
/// Sets the nominal refresh rate in frames per second. Pass 0 to update
|
|
/// as fast as possible (the update callback drives the pace).
|
|
public static func setRefreshRate(_ rate: Float) {
|
|
api.setRefreshRate.unsafelyUnwrapped(rate)
|
|
}
|
|
|
|
/// The current nominal refresh rate.
|
|
public static var refreshRate: Float { api.getRefreshRate.unsafelyUnwrapped() }
|
|
|
|
/// The measured average frames per second.
|
|
public static var fps: Float { api.getFPS.unsafelyUnwrapped() }
|
|
|
|
/// Draws the frame white-on-black when `true`.
|
|
public static func setInverted(_ inverted: Bool) {
|
|
api.setInverted.unsafelyUnwrapped(inverted ? 1 : 0)
|
|
}
|
|
|
|
/// Sets the display scale factor: 1, 2, 4, or 8.
|
|
public static func setScale(_ scale: UInt32) {
|
|
api.setScale.unsafelyUnwrapped(scale)
|
|
}
|
|
|
|
/// Adds a mosaic effect. Valid values for each axis are 0...3.
|
|
public static func setMosaic(x: UInt32, y: UInt32) {
|
|
api.setMosaic.unsafelyUnwrapped(x, y)
|
|
}
|
|
|
|
/// Flips the display on the given axes.
|
|
public static func setFlipped(x: Bool, y: Bool) {
|
|
api.setFlipped.unsafelyUnwrapped(x ? 1 : 0, y ? 1 : 0)
|
|
}
|
|
|
|
/// Offsets the display by the given amount. Areas outside the frame
|
|
/// buffer draw black.
|
|
public static func setOffset(x: Int, y: Int) {
|
|
api.setOffset.unsafelyUnwrapped(Int32(x), Int32(y))
|
|
}
|
|
}
|