Add methods to get properties of Buffer.
Bug: 307535208
Test: atest libnativewindow_rs-internal_test
Change-Id: Id07eb850ad1db7fbb25ef2a563d1f212ea7145f7
diff --git a/libs/nativewindow/rust/src/surface/buffer.rs b/libs/nativewindow/rust/src/surface/buffer.rs
index 91f5de5..a2d74d4 100644
--- a/libs/nativewindow/rust/src/surface/buffer.rs
+++ b/libs/nativewindow/rust/src/surface/buffer.rs
@@ -13,7 +13,7 @@
// limitations under the License.
use super::{ErrorCode, Surface};
-use nativewindow_bindgen::ANativeWindow_Buffer;
+use nativewindow_bindgen::{AHardwareBuffer_Format, ANativeWindow_Buffer};
use std::ptr::null_mut;
/// An empty `ANativeWindow_Buffer`.
@@ -43,4 +43,26 @@
pub fn unlock_and_post(self) -> Result<(), ErrorCode> {
self.surface.unlock_and_post()
}
+
+ /// The number of pixels that are shown horizontally.
+ pub fn width(&self) -> i32 {
+ self.buffer.width
+ }
+
+ /// The number of pixels that are shown vertically.
+ pub fn height(&self) -> i32 {
+ self.buffer.height
+ }
+
+ /// The number of pixels that a line in the buffer takes in memory.
+ ///
+ /// This may be greater than the width.
+ pub fn stride(&self) -> i32 {
+ self.buffer.stride
+ }
+
+ /// The pixel format of the buffer.
+ pub fn format(&self) -> Result<AHardwareBuffer_Format::Type, ErrorCode> {
+ self.buffer.format.try_into().map_err(|_| ErrorCode(self.buffer.format))
+ }
}