| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- // Copyright 2015 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- // Package size defines an event for the dimensions, physical resolution and
- // orientation of the app's window.
- //
- // See the golang.org/x/mobile/app package for details on the event model.
- package size
- import (
- "image"
- "golang.org/x/mobile/geom"
- )
- // Event holds the dimensions, physical resolution and orientation of the app's
- // window.
- type Event struct {
- // WidthPx and HeightPx are the window's dimensions in pixels.
- WidthPx, HeightPx int
- // WidthPt and HeightPt are the window's physical dimensions in points
- // (1/72 of an inch).
- //
- // The values are based on PixelsPerPt and are therefore approximate, as
- // per the comment on PixelsPerPt.
- WidthPt, HeightPt geom.Pt
- // PixelsPerPt is the window's physical resolution. It is the number of
- // pixels in a single geom.Pt, from the golang.org/x/mobile/geom package.
- //
- // There are a wide variety of pixel densities in existing phones and
- // tablets, so apps should be written to expect various non-integer
- // PixelsPerPt values. In general, work in geom.Pt.
- //
- // The value is approximate, in that the OS, drivers or hardware may report
- // approximate or quantized values. An N x N pixel square should be roughly
- // 1 square inch for N = int(PixelsPerPt * 72), although different square
- // lengths (in pixels) might be closer to 1 inch in practice. Nonetheless,
- // this PixelsPerPt value should be consistent with e.g. the ratio of
- // WidthPx to WidthPt.
- PixelsPerPt float32
- // Orientation is the orientation of the device screen.
- Orientation Orientation
- }
- // Size returns the window's size in pixels, at the time this size event was
- // sent.
- func (e Event) Size() image.Point {
- return image.Point{e.WidthPx, e.HeightPx}
- }
- // Bounds returns the window's bounds in pixels, at the time this size event
- // was sent.
- //
- // The top-left pixel is always (0, 0). The bottom-right pixel is given by the
- // width and height.
- func (e Event) Bounds() image.Rectangle {
- return image.Rectangle{Max: image.Point{e.WidthPx, e.HeightPx}}
- }
- // Orientation is the orientation of the device screen.
- type Orientation int
- const (
- // OrientationUnknown means device orientation cannot be determined.
- //
- // Equivalent on Android to Configuration.ORIENTATION_UNKNOWN
- // and on iOS to:
- // UIDeviceOrientationUnknown
- // UIDeviceOrientationFaceUp
- // UIDeviceOrientationFaceDown
- OrientationUnknown Orientation = iota
- // OrientationPortrait is a device oriented so it is tall and thin.
- //
- // Equivalent on Android to Configuration.ORIENTATION_PORTRAIT
- // and on iOS to:
- // UIDeviceOrientationPortrait
- // UIDeviceOrientationPortraitUpsideDown
- OrientationPortrait
- // OrientationLandscape is a device oriented so it is short and wide.
- //
- // Equivalent on Android to Configuration.ORIENTATION_LANDSCAPE
- // and on iOS to:
- // UIDeviceOrientationLandscapeLeft
- // UIDeviceOrientationLandscapeRight
- OrientationLandscape
- )
|