Browse Source

Fixes issue #165

- The MOUSEDOWN event actually gives you the offset relative to the mainColorRect widget, but the code was assuming an offset relative to the container widget.
- Simplified a few arithmetic calculations.
cib 13 năm trước cách đây
mục cha
commit
08822cd781

+ 5 - 8
Modules/Contents/UI/Source/PolyUIColorBox.cpp

@@ -308,15 +308,13 @@ void UIColorPicker::handleEvent(Event *event) {
 		switch(event->getEventCode()) {
 		switch(event->getEventCode()) {
 			case InputEvent::EVENT_MOUSEDOWN:
 			case InputEvent::EVENT_MOUSEDOWN:
 			{
 			{
-				InputEvent *inputEvent = (InputEvent*) event;			
+				InputEvent *inputEvent = (InputEvent*) event;
 				mainSelector->setPosition(inputEvent->getMousePosition().x, inputEvent->getMousePosition().y);
 				mainSelector->setPosition(inputEvent->getMousePosition().x, inputEvent->getMousePosition().y);
-				
 				mainSelector->startDrag(inputEvent->mousePosition.x-mainSelector->getPosition().x,inputEvent->mousePosition.y-mainSelector->getPosition().y);
 				mainSelector->startDrag(inputEvent->mousePosition.x-mainSelector->getPosition().x,inputEvent->mousePosition.y-mainSelector->getPosition().y);
 				
 				
-				Number newV = 1.0 - ((inputEvent->getMousePosition().y-mainColorRect->getPosition().y)/((mainColorRect->getPosition().y+mainColorRect->getHeight())-mainColorRect->getPosition().y));
+				Number newV = 1.0 - inputEvent->getMousePosition().y / mainColorRect->getHeight();
+				Number newS = inputEvent->getMousePosition().x / mainColorRect->getWidth();
 
 
-				Number newS = ((inputEvent->getMousePosition().x-mainColorRect->getPosition().x)/((mainColorRect->getPosition().x+mainColorRect->getWidth())-mainColorRect->getPosition().x));
-					
 				setSaturationAndValue(newS, newV);
 				setSaturationAndValue(newS, newV);
 			}
 			}
 			break;
 			break;
@@ -367,12 +365,11 @@ void UIColorPicker::Update() {
 		Number newPosX = lastMainSelectorPosition.x;
 		Number newPosX = lastMainSelectorPosition.x;
 		Number newPosY = lastMainSelectorPosition.y;		
 		Number newPosY = lastMainSelectorPosition.y;		
 		
 		
-		Number newV = 1.0 - ((newPosY-mainColorRect->getPosition().y)/((mainColorRect->getPosition().y+mainColorRect->getHeight())-mainColorRect->getPosition().y));
+		Number newV = 1.0 - (newPosY - mainColorRect->getPosition().y) / mainColorRect->getHeight();
 
 
-		Number newS = ((newPosX-mainColorRect->getPosition().x)/((mainColorRect->getPosition().x+mainColorRect->getWidth())-mainColorRect->getPosition().x));
+		Number newS = (newPosX - mainColorRect->getPosition().x) / mainColorRect->getWidth();
 					
 					
 		setSaturationAndValue(newS, newV);		
 		setSaturationAndValue(newS, newV);		
-
 	}
 	}
 	
 	
 	if(hueSelector->getPosition().y != lastHueSelectorPosition) {
 	if(hueSelector->getPosition().y != lastHueSelectorPosition) {