| 3753 | } |
| 3754 | |
| 3755 | func (cw *ColorWheel) Update() { |
| 3756 | |
| 3757 | mousePos := globals.Mouse.Position() |
| 3758 | |
| 3759 | hueRect := *cw.Rect |
| 3760 | hueRect.H = float32(cw.HueStrip.H) |
| 3761 | |
| 3762 | valueRect := hueRect |
| 3763 | valueRect.Y = hueRect.Y + hueRect.H |
| 3764 | valueRect.H = 32 |
| 3765 | |
| 3766 | if globals.Mouse.Button(sdl.BUTTON_LEFT).Pressed() && mousePos.Inside(&hueRect) { |
| 3767 | cw.HueSampling = true |
| 3768 | globals.Mouse.Button(sdl.BUTTON_LEFT).Consume() |
| 3769 | } else if globals.Mouse.Button(sdl.BUTTON_LEFT).Pressed() && mousePos.Inside(&valueRect) { |
| 3770 | cw.ValueSampling = true |
| 3771 | globals.Mouse.Button(sdl.BUTTON_LEFT).Consume() |
| 3772 | } |
| 3773 | |
| 3774 | if cw.HueSampling { |
| 3775 | |
| 3776 | mpX := int(mousePos.X - cw.Rect.X) |
| 3777 | mpY := int(mousePos.Y - cw.Rect.Y) |
| 3778 | |
| 3779 | if mpX < 0 { |
| 3780 | mpX = 0 |
| 3781 | } else if mpX > int(cw.HueStrip.W)-1 { |
| 3782 | mpX = int(cw.HueStrip.W) - 1 |
| 3783 | } |
| 3784 | |
| 3785 | if mpY < 0 { |
| 3786 | mpY = 0 |
| 3787 | } else if mpY > int(cw.HueStrip.H)-1 { |
| 3788 | mpY = int(cw.HueStrip.H) - 1 |
| 3789 | } |
| 3790 | |
| 3791 | cw.SampledPosX = int32(mpX) |
| 3792 | cw.SampledPosY = int32(mpY) |
| 3793 | |
| 3794 | h := float32(mpX) / float32(cw.HueStrip.W-1) |
| 3795 | |
| 3796 | cw.SampledHue = NewColorFromHSV(float64(h), float64(mpY)/float64(cw.HueStrip.H-1), 1) |
| 3797 | |
| 3798 | if cw.OnColorChange != nil { |
| 3799 | cw.OnColorChange() |
| 3800 | } |
| 3801 | |
| 3802 | } |
| 3803 | |
| 3804 | if cw.ValueSampling { |
| 3805 | |
| 3806 | mpX := int(mousePos.X - cw.Rect.X) |
| 3807 | |
| 3808 | if mpX < 0 { |
| 3809 | mpX = 0 |
| 3810 | } else if mpX > int(cw.ValueStrip.W)-1 { |
| 3811 | mpX = int(cw.ValueStrip.W) - 1 |
| 3812 | } |