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))
+    }
 }