feat(app): implement basic function
General - 配置界面支持配置对象存储桶 - 快捷键进入截图 - 一键上传截图 & 复制截图链接 MacOS - 状态栏指示器和应用图标
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
// Package screencapture defines the cross-platform Capturer abstraction.
|
||||
//
|
||||
// Per-platform implementations live in sibling files:
|
||||
// - capturer_darwin.go macOS, uses /usr/sbin/screencapture
|
||||
// - capturer_other.go non-darwin, uses kbinani/screenshot
|
||||
//
|
||||
// The interface is kept here so callers do not need build tags.
|
||||
package screencapture
|
||||
|
||||
import "image"
|
||||
|
||||
// Capturer is the abstraction that the application service depends on.
|
||||
type Capturer interface {
|
||||
// CaptureRegion grabs the pixels within the supplied virtual-screen
|
||||
// rectangle and returns PNG-encoded bytes.
|
||||
CaptureRegion(rect image.Rectangle) ([]byte, error)
|
||||
|
||||
// VirtualBounds returns the union rectangle of every connected display.
|
||||
VirtualBounds() image.Rectangle
|
||||
|
||||
// CaptureInteractive opens a system-provided region picker (e.g. macOS's
|
||||
// `screencapture -i`) and returns the resulting PNG bytes once the user
|
||||
// confirms a selection. If the user cancels (Esc / right-click), it
|
||||
// returns (nil, ErrCancelled) so callers can short-circuit cleanly.
|
||||
CaptureInteractive() ([]byte, error)
|
||||
|
||||
// CaptureFullScreen grabs the entire primary display silently and
|
||||
// returns the PNG bytes. Used as the backdrop for the in-app Snipaste-
|
||||
// style overlay; the per-region crop happens later in CropPNG once the
|
||||
// user finishes dragging.
|
||||
CaptureFullScreen() ([]byte, error)
|
||||
}
|
||||
|
||||
// ErrCancelled signals that the user aborted an interactive capture.
|
||||
// It is a sentinel value; callers should compare via errors.Is.
|
||||
type cancelled struct{}
|
||||
|
||||
func (cancelled) Error() string { return "capture cancelled by user" }
|
||||
|
||||
// ErrCancelled is returned from CaptureInteractive when the user dismisses
|
||||
// the system selection UI without confirming a region.
|
||||
var ErrCancelled = cancelled{}
|
||||
Reference in New Issue
Block a user