OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 723 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
734 nativeKeyCode = event.nativeVirtualKeyCode(); | 734 nativeKeyCode = event.nativeVirtualKeyCode(); |
735 | 735 |
736 windowsKeyCode = windowsKeyCodeWithoutLocation(event.windowsVirtualKeyCode() ); | 736 windowsKeyCode = windowsKeyCodeWithoutLocation(event.windowsVirtualKeyCode() ); |
737 modifiers |= locationModifiersFromWindowsKeyCode(event.windowsVirtualKeyCode ()); | 737 modifiers |= locationModifiersFromWindowsKeyCode(event.windowsVirtualKeyCode ()); |
738 | 738 |
739 event.text().copyTo(text, 0, textLengthCap); | 739 event.text().copyTo(text, 0, textLengthCap); |
740 event.unmodifiedText().copyTo(unmodifiedText, 0, textLengthCap); | 740 event.unmodifiedText().copyTo(unmodifiedText, 0, textLengthCap); |
741 memcpy(keyIdentifier, event.keyIdentifier().ascii().data(), std::min(static_ cast<unsigned>(keyIdentifierLengthCap), event.keyIdentifier().length())); | 741 memcpy(keyIdentifier, event.keyIdentifier().ascii().data(), std::min(static_ cast<unsigned>(keyIdentifierLengthCap), event.keyIdentifier().length())); |
742 } | 742 } |
743 | 743 |
744 static void addTouchPoints(const Widget* widget, const AtomicString& touchType, TouchList* touches, WebTouchPoint* touchPoints, unsigned* touchPointsLength, con st RenderObject* renderObject) | 744 static WebTouchPoint toWebTouchPoint(const Touch* touch, const RenderObject* ren derObject) |
745 { | |
746 WebTouchPoint point; | |
747 point.id = touch->identifier(); | |
748 point.screenPosition = touch->screenLocation(); | |
749 point.position = convertAbsoluteLocationForRenderObjectFloat(touch->absolute Location(), *renderObject); | |
750 point.radiusX = touch->radiusX(); | |
751 point.radiusY = touch->radiusY(); | |
752 point.rotationAngle = touch->webkitRotationAngle(); | |
753 point.force = touch->force(); | |
754 point.state = WebTouchPoint::StateStationary; | |
755 return point; | |
756 } | |
757 | |
758 static void addActiveTouchPoints(const Widget* widget, TouchList* touches, WebTo uchPoint* touchPoints, unsigned* touchPointsLength, const RenderObject* renderOb ject) | |
745 { | 759 { |
746 unsigned numberOfTouches = std::min(touches->length(), static_cast<unsigned> (WebTouchEvent::touchesLengthCap)); | 760 unsigned numberOfTouches = std::min(touches->length(), static_cast<unsigned> (WebTouchEvent::touchesLengthCap)); |
747 for (unsigned i = 0; i < numberOfTouches; ++i) { | 761 for (unsigned i = 0; i < numberOfTouches; ++i) |
748 const Touch* touch = touches->item(i); | 762 touchPoints[i] = toWebTouchPoint(touches->item(i), renderObject); |
749 | |
750 WebTouchPoint point; | |
751 point.id = touch->identifier(); | |
752 point.screenPosition = touch->screenLocation(); | |
753 point.position = convertAbsoluteLocationForRenderObjectFloat(touch->abso luteLocation(), *renderObject); | |
754 point.radiusX = touch->radiusX(); | |
755 point.radiusY = touch->radiusY(); | |
756 point.rotationAngle = touch->webkitRotationAngle(); | |
757 point.force = touch->force(); | |
758 point.state = toWebTouchPointState(touchType); | |
759 | |
760 touchPoints[i] = point; | |
761 } | |
762 *touchPointsLength = numberOfTouches; | 763 *touchPointsLength = numberOfTouches; |
763 } | 764 } |
764 | 765 |
766 static void addOrUpdateChangedTouchPoints(const Widget* widget, const AtomicStri ng& touchType, TouchList* touches, WebTouchPoint* touchPoints, unsigned* touchPo intsLength, const RenderObject* renderObject) | |
767 { | |
768 unsigned initialTouchPointsLength = *touchPointsLength; | |
769 for (unsigned i = 0; i < touches->length(); ++i) { | |
770 const Touch* touch = touches->item(i); | |
771 | |
772 unsigned pointIndex = *touchPointsLength; | |
773 for (unsigned j = 0; j < initialTouchPointsLength; ++j) { | |
774 if (touchPoints[j].id == static_cast<int>(touch->identifier())) { | |
775 pointIndex = j; | |
aelias_OOO_until_Jul13
2014/09/10 01:14:05
Would it have correct semantics to first add the c
jdduke (slow)
2014/09/10 01:53:36
Yeah, that also works, will update in the morning.
| |
776 break; | |
777 } | |
778 } | |
779 | |
780 if (pointIndex >= static_cast<unsigned>(WebTouchEvent::touchesLengthCap) ) | |
781 continue; | |
782 | |
783 if (pointIndex == *touchPointsLength) { | |
784 ++(*touchPointsLength); | |
785 touchPoints[pointIndex] = toWebTouchPoint(touch, renderObject); | |
786 } | |
787 touchPoints[pointIndex].state = toWebTouchPointState(touchType); | |
788 } | |
789 } | |
790 | |
765 WebTouchEventBuilder::WebTouchEventBuilder(const Widget* widget, const RenderObj ect* renderObject, const TouchEvent& event) | 791 WebTouchEventBuilder::WebTouchEventBuilder(const Widget* widget, const RenderObj ect* renderObject, const TouchEvent& event) |
766 { | 792 { |
767 if (event.type() == EventTypeNames::touchstart) | 793 if (event.type() == EventTypeNames::touchstart) |
768 type = TouchStart; | 794 type = TouchStart; |
769 else if (event.type() == EventTypeNames::touchmove) | 795 else if (event.type() == EventTypeNames::touchmove) |
770 type = TouchMove; | 796 type = TouchMove; |
771 else if (event.type() == EventTypeNames::touchend) | 797 else if (event.type() == EventTypeNames::touchend) |
772 type = TouchEnd; | 798 type = TouchEnd; |
773 else if (event.type() == EventTypeNames::touchcancel) | 799 else if (event.type() == EventTypeNames::touchcancel) |
774 type = TouchCancel; | 800 type = TouchCancel; |
775 else { | 801 else { |
776 ASSERT_NOT_REACHED(); | 802 ASSERT_NOT_REACHED(); |
777 type = Undefined; | 803 type = Undefined; |
778 return; | 804 return; |
779 } | 805 } |
780 | 806 |
781 modifiers = getWebInputModifiers(event); | 807 modifiers = getWebInputModifiers(event); |
782 timeStampSeconds = event.timeStamp() / millisPerSecond; | 808 timeStampSeconds = event.timeStamp() / millisPerSecond; |
783 cancelable = event.cancelable(); | 809 cancelable = event.cancelable(); |
784 | 810 |
785 addTouchPoints(widget, event.type(), event.touches(), touches, &touchesLengt h, renderObject); | 811 addActiveTouchPoints(widget, event.touches(), touches, &touchesLength, rende rObject); |
786 addTouchPoints(widget, event.type(), event.changedTouches(), changedTouches, &changedTouchesLength, renderObject); | 812 addOrUpdateChangedTouchPoints(widget, event.type(), event.changedTouches(), touches, &touchesLength, renderObject); |
787 addTouchPoints(widget, event.type(), event.targetTouches(), targetTouches, & targetTouchesLength, renderObject); | |
788 } | 813 } |
789 | 814 |
790 WebGestureEventBuilder::WebGestureEventBuilder(const Widget* widget, const Rende rObject* renderObject, const GestureEvent& event) | 815 WebGestureEventBuilder::WebGestureEventBuilder(const Widget* widget, const Rende rObject* renderObject, const GestureEvent& event) |
791 { | 816 { |
792 if (event.type() == EventTypeNames::gestureshowpress) | 817 if (event.type() == EventTypeNames::gestureshowpress) |
793 type = GestureShowPress; | 818 type = GestureShowPress; |
794 else if (event.type() == EventTypeNames::gesturetapdown) | 819 else if (event.type() == EventTypeNames::gesturetapdown) |
795 type = GestureTapDown; | 820 type = GestureTapDown; |
796 else if (event.type() == EventTypeNames::gesturescrollstart) | 821 else if (event.type() == EventTypeNames::gesturescrollstart) |
797 type = GestureScrollBegin; | 822 type = GestureScrollBegin; |
(...skipping 12 matching lines...) Expand all Loading... | |
810 modifiers = getWebInputModifiers(event); | 835 modifiers = getWebInputModifiers(event); |
811 | 836 |
812 globalX = event.screenX(); | 837 globalX = event.screenX(); |
813 globalY = event.screenY(); | 838 globalY = event.screenY(); |
814 IntPoint localPoint = convertAbsoluteLocationForRenderObject(event.absoluteL ocation(), *renderObject); | 839 IntPoint localPoint = convertAbsoluteLocationForRenderObject(event.absoluteL ocation(), *renderObject); |
815 x = localPoint.x(); | 840 x = localPoint.x(); |
816 y = localPoint.y(); | 841 y = localPoint.y(); |
817 } | 842 } |
818 | 843 |
819 } // namespace blink | 844 } // namespace blink |
OLD | NEW |