initial commit
This commit is contained in:
87
model_output_action.go
Normal file
87
model_output_action.go
Normal file
@ -0,0 +1,87 @@
|
||||
package niri
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
)
|
||||
|
||||
type OutputActionRequest struct {
|
||||
Output OutputName `json:"output"`
|
||||
Action OutputAction `json:"action"`
|
||||
}
|
||||
|
||||
type outputActionResponse struct {
|
||||
OutputConfigChanged string `json:"OutputConfigChanged"`
|
||||
}
|
||||
|
||||
type OutputAction struct {
|
||||
off Option[bool]
|
||||
on Option[bool]
|
||||
mode Option[ModeToSet]
|
||||
scale Option[ScaleToSet]
|
||||
transform Option[OutputTransform]
|
||||
position Option[PositionToSet]
|
||||
vrr Option[ConfiguredVrr]
|
||||
}
|
||||
|
||||
func OutputActionOff(output string) OutputActionRequest {
|
||||
return OutputActionRequest{
|
||||
Output: OutputName(output),
|
||||
Action: OutputAction{off: OptionOf(true)},
|
||||
}
|
||||
}
|
||||
|
||||
func OutputActionOn(output string) OutputActionRequest {
|
||||
return OutputActionRequest{
|
||||
Output: OutputName(output),
|
||||
Action: OutputAction{on: OptionOf(true)},
|
||||
}
|
||||
}
|
||||
|
||||
func OutputActionMode(output string, mode ModeToSet) OutputActionRequest {
|
||||
return OutputActionRequest{
|
||||
Output: OutputName(output),
|
||||
Action: OutputAction{mode: OptionOf(mode)},
|
||||
}
|
||||
}
|
||||
|
||||
func OutputActionScale(output string, scale ScaleToSet) OutputActionRequest {
|
||||
return OutputActionRequest{
|
||||
Output: OutputName(output),
|
||||
Action: OutputAction{scale: OptionOf(scale)},
|
||||
}
|
||||
}
|
||||
|
||||
func OutputActionTransform(output string, transform OutputTransform) OutputActionRequest {
|
||||
return OutputActionRequest{
|
||||
Output: OutputName(output),
|
||||
Action: OutputAction{transform: OptionOf(transform)},
|
||||
}
|
||||
}
|
||||
|
||||
func OutputActionVrr(output string, vrr ConfiguredVrr) OutputActionRequest {
|
||||
return OutputActionRequest{
|
||||
Output: OutputName(output),
|
||||
Action: OutputAction{vrr: OptionOf(vrr)},
|
||||
}
|
||||
}
|
||||
|
||||
func (m OutputAction) MarshalJSON() ([]byte, error) {
|
||||
if m.off != nil {
|
||||
return json.Marshal("Off")
|
||||
} else if m.on != nil {
|
||||
return json.Marshal("On")
|
||||
} else if m.mode != nil {
|
||||
return json.Marshal(map[string]map[string]ModeToSet{"Mode": {"mode": *m.mode}})
|
||||
} else if m.scale != nil {
|
||||
return json.Marshal(map[string]map[string]ScaleToSet{"Scale": {"scale": *m.scale}})
|
||||
} else if m.transform != nil {
|
||||
return json.Marshal(map[string]map[string]OutputTransform{"Transform": {"transform": *m.transform}})
|
||||
} else if m.position != nil {
|
||||
return json.Marshal(map[string]map[string]PositionToSet{"Position": {"position": *m.position}})
|
||||
} else if m.vrr != nil {
|
||||
return json.Marshal(map[string]map[string]ConfiguredVrr{"Vrr": {"vrr": *m.vrr}})
|
||||
}
|
||||
|
||||
return nil, errors.New("OutputAction.MarshalJson()")
|
||||
}
|
Reference in New Issue
Block a user