123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322 |
- package Brightness
- import(
- "fmt"
-
- "io/ioutil"
- "strconv"
-
- "github.com/veandco/go-sdl2/sdl"
- "github.com/cuu/gogame/event"
- "github.com/cuu/gogame/draw"
- "github.com/cuu/gogame/surface"
- "github.com/cuu/gogame/rect"
- "github.com/cuu/LauncherGoDev/sysgo"
- "github.com/cuu/LauncherGoDev/sysgo/UI"
- )
- type OnChangeCB_T func(int)
- type SliderIcon struct {
- UI.IconItem
- Parent *BSlider
-
- }
- func NewSliderIcon() *SliderIcon {
- p := &SliderIcon{}
- p.MyType = UI.ICON_TYPES["EXE"]
- p.Align = UI.ALIGN["VCenter"]
-
- return p
- }
- func (self *SliderIcon) Draw() {
- if self.Parent == nil {
- fmt.Println("Error: SliderIcon Draw Parent nil")
- return
- }
- parent_x,parent_y := self.Parent.Coord()
-
- if self.Label != nil {
- // lab_x,lab_y := self.Label.Coord()
- lab_w,lab_h:= self.Label.Size()
-
- if self.Align == UI.ALIGN["VCenter"] {
- // fmt.Println("IconItem Draw VCenter:",lab_w,lab_h,self.Label.GetText())
-
- self.Label.NewCoord( self.PosX - lab_w/2 + parent_x, self.PosY + self.Height/2+6+parent_y)
-
- }else if self.Align == UI.ALIGN["HLeft"] {
- self.Label.NewCoord( self.PosX + self.Width/2+3+parent_x, self.PosY - lab_h/2 + parent_y)
- }
- self.Label.Draw()
- }
- if self.ImgSurf != nil {
- surface.Blit(self.Parent.GetCanvasHWND(), self.ImgSurf,draw.MidRect(self.PosX + parent_x, self.PosY + parent_y,
- self.Width,self.Height, UI.Width, UI.Height),nil)
- }
- }
- type SliderMultiIcon struct {
- UI.MultiIconItem
- Parent *BSlider
- }
- func NewSliderMultiIcon() *SliderMultiIcon {
- p := &SliderMultiIcon{}
- p.MyType = UI.ICON_TYPES["EXE"]
- p.Align = UI.ALIGN["VCenter"]
-
- p.IconIndex = 0
- p.IconWidth = 18
- p.IconHeight = 18
-
- return p
- }
- func (self *SliderMultiIcon) Draw() {
- if self.Parent == nil {
- fmt.Println("Error: SliderMultiIcon Draw Parent nil")
- return
- }
- parent_x,parent_y := self.Parent.Coord()
-
- if self.Label != nil {
- // lab_x,lab_y := self.Label.Coord()
- lab_w,lab_h:= self.Label.Size()
- if self.Align == UI.ALIGN["VCenter"] {
- self.Label.NewCoord( self.PosX - lab_w/2 + parent_x, self.PosY + self.Height/2+6 + parent_y)
- }else if self.Align == UI.ALIGN["HLeft"] {
- self.Label.NewCoord( self.PosX + self.Width/2+3 + parent_x, self.PosY - lab_h/2 + parent_y )
- }
- self.Label.Draw()
- }
- if self.ImgSurf != nil {
-
- portion := rect.Rect(0,self.IconIndex*self.IconHeight,self.IconWidth,self.IconHeight)
-
- surface.Blit(self.Parent.GetCanvasHWND(),
- self.ImgSurf,draw.MidRect(self.PosX + parent_x, self.PosY + parent_y,
- self.Width,self.Height, UI.Width, UI.Height),&portion)
- }
- }
- type BSlider struct {
- UI.Slider
-
- BGpng *SliderIcon
- BGwidth int
- BGheight int
- //NeedleSurf
- Scale *SliderMultiIcon
- Parent *BrightnessPage
-
- OnChangeCB OnChangeCB_T
-
- }
- func NewBSlider() *BSlider {
- p := &BSlider{}
- p.Range = [2]int{0,255}
- p.Value = 0
-
- p.BGwidth = 179
- p.BGheight = 153
-
- return p
- }
- func (self *BSlider) GetCanvasHWND() *sdl.Surface {
- return self.CanvasHWND
- }
- func (self *BSlider) Init() {
- self.Width = self.Parent.Width
- self.Height = self.Parent.Height
-
- self.BGpng = NewSliderIcon()
- self.BGpng.ImgSurf = UI.MyIconPool.GetImgSurf("light")
- self.BGpng.MyType = UI.ICON_TYPES["STAT"]
- self.BGpng.Parent = self
- self.BGpng.Adjust(0,0,self.BGwidth,self.BGheight,0)
-
- self.Scale = NewSliderMultiIcon()
- self.Scale.MyType = UI.ICON_TYPES["STAT"]
- self.Scale.Parent = self
- self.Scale.ImgSurf = UI.MyIconPool.GetImgSurf("scale")
- self.Scale.IconWidth = 82
- self.Scale.IconHeight = 63
- self.Scale.Adjust(0,0,82,63,0)
- }
- func (self *BSlider) SetValue( brt int) {
- self.Value = brt
- }
- func (self *BSlider) Further() {
- self.Value += 1
-
- if self.Value > 9 {
- self.Value = 9
- }
- if self.OnChangeCB != nil {
- self.OnChangeCB(self.Value)
- }
-
- }
- func (self *BSlider) StepBack() {
- self.Value -= 1
-
- if self.Value < 0 {
- self.Value = 0
- }
-
- if self.OnChangeCB != nil {
- self.OnChangeCB(self.Value)
- }
- }
- func (self *BSlider) Draw() {
- self.BGpng.NewCoord(self.Width/2,self.Height/2+11)
- self.BGpng.Draw()
-
- self.Scale.NewCoord(self.Width/2,self.Height/2)
- icon_idx := self.Value-1
- if icon_idx <0 {
- icon_idx = 0
- }
-
- self.Scale.IconIndex = icon_idx
- self.Scale.Draw()
-
- }
- type BrightnessPage struct {
- UI.Page
- MySlider *BSlider
- }
- func NewBrightnessPage() *BrightnessPage {
- p:= &BrightnessPage{}
-
- p.PageIconMargin = 20
- p.SelectedIconTopOffset = 20
- p.EasingDur = 10
- p.Align = UI.ALIGN["SLeft"]
-
- p.FootMsg = [5]string{"Nav","","","Back","Enter"}
- return p
- }
- func (self *BrightnessPage) Init() {
- self.CanvasHWND = self.Screen.CanvasHWND
- self.Width = self.Screen.Width
- self.Height = self.Screen.Height
-
- self.MySlider = NewBSlider()
-
- self.MySlider.Parent = self
-
- self.MySlider.SetCanvasHWND(self.CanvasHWND)
- self.MySlider.OnChangeCB = self.WhenSliderDrag
-
- self.MySlider.Init()
-
- brt := self.ReadBackLight()
-
- self.MySlider.SetValue(brt)
-
- }
- func (self *BrightnessPage) ReadBackLight() int {
-
- if UI.FileExists(sysgo.BackLight) == false {
- return 0
- }
-
- lines,err := UI.ReadLines(sysgo.BackLight)
-
- if err != nil {
- fmt.Println(err)
- return 0
- }
-
- for _,v := range lines {
- n,e := strconv.Atoi(v)
- if e == nil {
- return n
- }else {
- fmt.Println(e)
- return 0
- }
- break
- }
-
- return 0
- }
- func (self *BrightnessPage) OnLoadCb() {
- brt := self.ReadBackLight()
-
- self.MySlider.SetValue(brt)
- }
- func (self *BrightnessPage) SetBackLight( newbrt int){
-
- newbrt_str := fmt.Sprintf("%d",newbrt)
-
- if UI.FileExists(sysgo.BackLight) {
- err:= ioutil.WriteFile(sysgo.BackLight,[]byte(newbrt_str),0644)
- if err != nil {
- fmt.Println(err)
- }
- }else{
- fmt.Println(sysgo.BackLight, " file not existed")
- }
- }
- func (self *BrightnessPage) WhenSliderDrag( val int) {
- self.SetBackLight(val)
- }
- func (self *BrightnessPage) KeyDown(ev *event.Event) {
- if ev.Data["Key"] == UI.CurKeys["A"] || ev.Data["Key"] == UI.CurKeys["Menu"] {
- self.ReturnToUpLevelPage()
- self.Screen.Draw()
- self.Screen.SwapAndShow()
- }
-
- if ev.Data["Key"] == UI.CurKeys["Right"] {
- self.MySlider.Further()
- self.Screen.Draw()
- self.Screen.SwapAndShow()
- }
- if ev.Data["Key"] == UI.CurKeys["Left"] {
- self.MySlider.StepBack()
- self.Screen.Draw()
- self.Screen.SwapAndShow()
- }
- }
- func (self *BrightnessPage) Draw() {
- self.ClearCanvas()
- self.MySlider.Draw()
- }
|