twitchapon-anim

Basic Twitchapon Receiver/Visuals
git clone git://bsandro.tech/twitchapon-anim
Log | Files | Refs | README | LICENSE

size.go (3106B)


      1 // Copyright 2015 The Go Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style
      3 // license that can be found in the LICENSE file.
      4 
      5 // Package size defines an event for the dimensions, physical resolution and
      6 // orientation of the app's window.
      7 //
      8 // See the golang.org/x/mobile/app package for details on the event model.
      9 package size // import "golang.org/x/mobile/event/size"
     10 
     11 import (
     12 	"image"
     13 
     14 	"golang.org/x/mobile/geom"
     15 )
     16 
     17 // Event holds the dimensions, physical resolution and orientation of the app's
     18 // window.
     19 type Event struct {
     20 	// WidthPx and HeightPx are the window's dimensions in pixels.
     21 	WidthPx, HeightPx int
     22 
     23 	// WidthPt and HeightPt are the window's physical dimensions in points
     24 	// (1/72 of an inch).
     25 	//
     26 	// The values are based on PixelsPerPt and are therefore approximate, as
     27 	// per the comment on PixelsPerPt.
     28 	WidthPt, HeightPt geom.Pt
     29 
     30 	// PixelsPerPt is the window's physical resolution. It is the number of
     31 	// pixels in a single geom.Pt, from the golang.org/x/mobile/geom package.
     32 	//
     33 	// There are a wide variety of pixel densities in existing phones and
     34 	// tablets, so apps should be written to expect various non-integer
     35 	// PixelsPerPt values. In general, work in geom.Pt.
     36 	//
     37 	// The value is approximate, in that the OS, drivers or hardware may report
     38 	// approximate or quantized values. An N x N pixel square should be roughly
     39 	// 1 square inch for N = int(PixelsPerPt * 72), although different square
     40 	// lengths (in pixels) might be closer to 1 inch in practice. Nonetheless,
     41 	// this PixelsPerPt value should be consistent with e.g. the ratio of
     42 	// WidthPx to WidthPt.
     43 	PixelsPerPt float32
     44 
     45 	// Orientation is the orientation of the device screen.
     46 	Orientation Orientation
     47 }
     48 
     49 // Size returns the window's size in pixels, at the time this size event was
     50 // sent.
     51 func (e Event) Size() image.Point {
     52 	return image.Point{e.WidthPx, e.HeightPx}
     53 }
     54 
     55 // Bounds returns the window's bounds in pixels, at the time this size event
     56 // was sent.
     57 //
     58 // The top-left pixel is always (0, 0). The bottom-right pixel is given by the
     59 // width and height.
     60 func (e Event) Bounds() image.Rectangle {
     61 	return image.Rectangle{Max: image.Point{e.WidthPx, e.HeightPx}}
     62 }
     63 
     64 // Orientation is the orientation of the device screen.
     65 type Orientation int
     66 
     67 const (
     68 	// OrientationUnknown means device orientation cannot be determined.
     69 	//
     70 	// Equivalent on Android to Configuration.ORIENTATION_UNKNOWN
     71 	// and on iOS to:
     72 	//	UIDeviceOrientationUnknown
     73 	//	UIDeviceOrientationFaceUp
     74 	//	UIDeviceOrientationFaceDown
     75 	OrientationUnknown Orientation = iota
     76 
     77 	// OrientationPortrait is a device oriented so it is tall and thin.
     78 	//
     79 	// Equivalent on Android to Configuration.ORIENTATION_PORTRAIT
     80 	// and on iOS to:
     81 	//	UIDeviceOrientationPortrait
     82 	//	UIDeviceOrientationPortraitUpsideDown
     83 	OrientationPortrait
     84 
     85 	// OrientationLandscape is a device oriented so it is short and wide.
     86 	//
     87 	// Equivalent on Android to Configuration.ORIENTATION_LANDSCAPE
     88 	// and on iOS to:
     89 	//	UIDeviceOrientationLandscapeLeft
     90 	//	UIDeviceOrientationLandscapeRight
     91 	OrientationLandscape
     92 )