Changeset 87865 in webkit
- Timestamp:
- Jun 1, 2011, 4:19:02 PM (14 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r87864 r87865 1 2011-06-01 Emil A Eklund <eae@chromium.org> 2 3 Reviewed by Eric Seidel. 4 5 Switch MouseRelatedEvent to use IntPoint 6 https://bugs.webkit.org/show_bug.cgi?id=61574 7 8 Covered by existing tests. 9 10 * dom/MouseEvent.cpp: 11 (WebCore::MouseEvent::MouseEvent): 12 (WebCore::MouseEvent::initMouseEvent): 13 (WebCore::SimulatedMouseEvent::SimulatedMouseEvent): 14 * dom/MouseRelatedEvent.cpp: 15 (WebCore::MouseRelatedEvent::MouseRelatedEvent): 16 (WebCore::contentsScrollOffset): 17 (WebCore::MouseRelatedEvent::initCoordinates): 18 (WebCore::MouseRelatedEvent::computeRelativePosition): 19 (WebCore::MouseRelatedEvent::layerX): 20 (WebCore::MouseRelatedEvent::layerY): 21 (WebCore::MouseRelatedEvent::offsetX): 22 (WebCore::MouseRelatedEvent::offsetY): 23 (WebCore::MouseRelatedEvent::pageX): 24 (WebCore::MouseRelatedEvent::pageY): 25 (WebCore::MouseRelatedEvent::pageLocation): 26 (WebCore::MouseRelatedEvent::x): 27 (WebCore::MouseRelatedEvent::y): 28 * dom/MouseRelatedEvent.h: 29 (WebCore::MouseRelatedEvent::screenX): 30 (WebCore::MouseRelatedEvent::screenY): 31 (WebCore::MouseRelatedEvent::screenLocation): 32 (WebCore::MouseRelatedEvent::clientX): 33 (WebCore::MouseRelatedEvent::clientY): 34 (WebCore::MouseRelatedEvent::clientLocation): 35 (WebCore::MouseRelatedEvent::absoluteLocation): 36 * dom/TouchEvent.cpp: 37 (WebCore::TouchEvent::TouchEvent): 38 (WebCore::TouchEvent::initTouchEvent): 39 * dom/WheelEvent.cpp: 40 (WebCore::WheelEvent::WheelEvent): 41 (WebCore::WheelEvent::initWheelEvent): 42 (WebCore::WheelEventDispatchMediator::WheelEventDispatchMediator): 43 * dom/WheelEvent.h: 44 (WebCore::WheelEvent::create): 45 (WebCore::WheelEvent::wheelDelta): 46 (WebCore::WheelEvent::wheelDeltaX): 47 (WebCore::WheelEvent::wheelDeltaY): 48 (WebCore::WheelEvent::rawDeltaX): 49 (WebCore::WheelEvent::rawDeltaY): 50 (WebCore::WheelEvent::isHorizontal): 51 * platform/graphics/IntPoint.h: 52 (WebCore::IntPoint::scale): 53 1 54 2011-06-01 Levi Weintraub <leviw@chromium.org> 2 55 -
trunk/Source/WebCore/dom/MouseEvent.cpp
r86776 r87865 55 55 unsigned short button, PassRefPtr<EventTarget> relatedTarget, 56 56 PassRefPtr<Clipboard> clipboard, bool isSimulated) 57 : MouseRelatedEvent(eventType, canBubble, cancelable, view, detail, screenX, screenY,58 pageX, pageY, ctrlKey, altKey, shiftKey, metaKey, isSimulated)57 : MouseRelatedEvent(eventType, canBubble, cancelable, view, detail, IntPoint(screenX, screenY), 58 IntPoint(pageX, pageY), ctrlKey, altKey, shiftKey, metaKey, isSimulated) 59 59 , m_button(button == (unsigned short)-1 ? 0 : button) 60 60 , m_buttonDown(button != (unsigned short)-1) … … 78 78 initUIEvent(type, canBubble, cancelable, view, detail); 79 79 80 m_screenX = screenX; 81 m_screenY = screenY; 80 m_screenLocation = IntPoint(screenX, screenY); 82 81 m_ctrlKey = ctrlKey; 83 82 m_altKey = altKey; … … 88 87 m_relatedTarget = relatedTarget; 89 88 90 initCoordinates( clientX, clientY);89 initCoordinates(IntPoint(clientX, clientY)); 91 90 92 91 // FIXME: m_isSimulated is not set to false here. … … 154 153 if (this->underlyingEvent() && this->underlyingEvent()->isMouseEvent()) { 155 154 MouseEvent* mouseEvent = static_cast<MouseEvent*>(this->underlyingEvent()); 156 m_screenX = mouseEvent->screenX(); 157 m_screenY = mouseEvent->screenY(); 158 initCoordinates(mouseEvent->clientX(), mouseEvent->clientY()); 155 m_screenLocation = mouseEvent->screenLocation(); 156 initCoordinates(mouseEvent->clientLocation()); 159 157 } 160 158 } -
trunk/Source/WebCore/dom/MouseRelatedEvent.cpp
r87467 r87865 34 34 35 35 MouseRelatedEvent::MouseRelatedEvent() 36 : m_screenX(0) 37 , m_screenY(0) 38 , m_clientX(0) 39 , m_clientY(0) 40 , m_pageX(0) 41 , m_pageY(0) 42 , m_layerX(0) 43 , m_layerY(0) 44 , m_offsetX(0) 45 , m_offsetY(0) 46 , m_isSimulated(false) 36 : m_isSimulated(false) 47 37 , m_hasCachedRelativePosition(false) 48 38 { 49 39 } 50 40 51 static int contentsX(AbstractView* abstractView)41 static IntSize contentsScrollOffset(AbstractView* abstractView) 52 42 { 53 43 if (!abstractView) 54 return 0;44 return IntSize(); 55 45 Frame* frame = abstractView->frame(); 56 46 if (!frame) 57 return 0;47 return IntSize(); 58 48 FrameView* frameView = frame->view(); 59 49 if (!frameView) 60 return 0; 61 return frameView->scrollX() / frame->pageZoomFactor(); 62 } 63 64 static int contentsY(AbstractView* abstractView) 65 { 66 if (!abstractView) 67 return 0; 68 Frame* frame = abstractView->frame(); 69 if (!frame) 70 return 0; 71 FrameView* frameView = frame->view(); 72 if (!frameView) 73 return 0; 74 return frameView->scrollY() / frame->pageZoomFactor(); 50 return IntSize(); 51 return IntSize(frameView->scrollX() / frame->pageZoomFactor(), 52 frameView->scrollY() / frame->pageZoomFactor()); 75 53 } 76 54 77 55 MouseRelatedEvent::MouseRelatedEvent(const AtomicString& eventType, bool canBubble, bool cancelable, PassRefPtr<AbstractView> abstractView, 78 int detail, int screenX, int screenY, int windowX, int windowY,56 int detail, const IntPoint& screenLocation, const IntPoint& windowLocation, 79 57 bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, bool isSimulated) 80 58 : UIEventWithKeyState(eventType, canBubble, cancelable, abstractView, detail, ctrlKey, altKey, shiftKey, metaKey) 81 , m_screenX(screenX) 82 , m_screenY(screenY) 83 , m_clientX(0) 84 , m_clientY(0) 85 , m_pageX(0) 86 , m_pageY(0) 59 , m_screenLocation(screenLocation) 87 60 , m_isSimulated(isSimulated) 88 61 { … … 94 67 if (FrameView* frameView = frame->view()) { 95 68 scrollPosition = frameView->scrollPosition(); 96 adjustedPageLocation = frameView->windowToContents( IntPoint(windowX, windowY));69 adjustedPageLocation = frameView->windowToContents(windowLocation); 97 70 float pageZoom = frame->pageZoomFactor(); 98 71 if (pageZoom != 1.0f) { 99 72 // Adjust our pageX and pageY to account for the page zoom. 100 adjustedPageLocation.setX(lroundf(adjustedPageLocation.x() / pageZoom)); 101 adjustedPageLocation.setY(lroundf(adjustedPageLocation.y() / pageZoom)); 73 adjustedPageLocation.scale(1 / pageZoom, 1 / pageZoom); 74 75 // FIXME: Change this to use float math and proper rounding (or 76 // better yet, use IntPoint::scale). 102 77 scrollPosition.setX(scrollPosition.x() / pageZoom); 103 78 scrollPosition.setY(scrollPosition.y() / pageZoom); … … 106 81 } 107 82 108 IntPoint clientLocation(adjustedPageLocation - scrollPosition); 109 m_clientX = clientLocation.x(); 110 m_clientY = clientLocation.y(); 111 m_pageX = adjustedPageLocation.x(); 112 m_pageY = adjustedPageLocation.y(); 83 m_clientLocation = adjustedPageLocation - toSize(scrollPosition); 84 m_pageLocation = adjustedPageLocation; 113 85 114 86 initCoordinates(); … … 119 91 // Set up initial values for coordinates. 120 92 // Correct values are computed lazily, see computeRelativePosition. 121 m_layerX = m_pageX; 122 m_layerY = m_pageY; 123 m_offsetX = m_pageX; 124 m_offsetY = m_pageY; 93 m_layerLocation = m_pageLocation; 94 m_offsetLocation = m_pageLocation; 125 95 126 96 computePageLocation(); … … 128 98 } 129 99 130 void MouseRelatedEvent::initCoordinates( int clientX, int clientY)100 void MouseRelatedEvent::initCoordinates(const IntPoint& clientLocation) 131 101 { 132 102 // Set up initial values for coordinates. 133 103 // Correct values are computed lazily, see computeRelativePosition. 134 m_clientX = clientX; 135 m_clientY = clientY; 136 m_pageX = clientX + contentsX(view()); 137 m_pageY = clientY + contentsY(view()); 138 m_layerX = m_pageX; 139 m_layerY = m_pageY; 140 m_offsetX = m_pageX; 141 m_offsetY = m_pageY; 104 m_clientLocation = clientLocation; 105 m_pageLocation = clientLocation + contentsScrollOffset(view()); 106 107 m_layerLocation = m_pageLocation; 108 m_offsetLocation = m_pageLocation; 142 109 143 110 computePageLocation(); … … 174 141 175 142 // Compute coordinates that are based on the target. 176 m_layerX = m_pageX; 177 m_layerY = m_pageY; 178 m_offsetX = m_pageX; 179 m_offsetY = m_pageY; 143 m_layerLocation = m_pageLocation; 144 m_offsetLocation = m_pageLocation; 180 145 181 146 // Must have an updated render tree for this math to work correctly. 182 147 targetNode->document()->updateStyleIfNeeded(); 183 148 184 // Adjust offset X/Yto be relative to the target's position.149 // Adjust offsetLocation to be relative to the target's position. 185 150 if (!isSimulated()) { 186 151 if (RenderObject* r = targetNode->renderer()) { 187 152 FloatPoint localPos = r->absoluteToLocal(absoluteLocation(), false, true); 188 float zoomFactor = pageZoomFactor(this); 189 m_offsetX = lroundf(localPos.x() / zoomFactor); 190 m_offsetY = lroundf(localPos.y() / zoomFactor); 153 m_offsetLocation = roundedIntPoint(localPos); 154 float scaleFactor = 1 / pageZoomFactor(this); 155 if (scaleFactor != 1.0f) 156 m_offsetLocation.scale(scaleFactor, scaleFactor); 191 157 } 192 158 } 193 159 194 // Adjust layer X/Yto be relative to the layer.160 // Adjust layerLocation to be relative to the layer. 195 161 // FIXME: We're pretty sure this is the wrong definition of "layer." 196 162 // Our RenderLayer is a more modern concept, and layerX/Y is some … … 205 171 layer->updateLayerPosition(); 206 172 for (; layer; layer = layer->parent()) { 207 const IntPoint& location = layer->location(); 208 m_layerX -= location.x(); 209 m_layerY -= location.y(); 173 m_layerLocation -= toSize(layer->location()); 210 174 } 211 175 } … … 218 182 if (!m_hasCachedRelativePosition) 219 183 computeRelativePosition(); 220 return m_layer X;184 return m_layerLocation.x(); 221 185 } 222 186 … … 225 189 if (!m_hasCachedRelativePosition) 226 190 computeRelativePosition(); 227 return m_layer Y;191 return m_layerLocation.y(); 228 192 } 229 193 … … 232 196 if (!m_hasCachedRelativePosition) 233 197 computeRelativePosition(); 234 return m_offset X;198 return m_offsetLocation.x(); 235 199 } 236 200 … … 239 203 if (!m_hasCachedRelativePosition) 240 204 computeRelativePosition(); 241 return m_offset Y;205 return m_offsetLocation.y(); 242 206 } 243 207 244 208 int MouseRelatedEvent::pageX() const 245 209 { 246 return m_page X;210 return m_pageLocation.x(); 247 211 } 248 212 249 213 int MouseRelatedEvent::pageY() const 250 214 { 251 return m_pageY; 215 return m_pageLocation.y(); 216 } 217 218 const IntPoint& MouseRelatedEvent::pageLocation() const 219 { 220 return m_pageLocation; 252 221 } 253 222 … … 256 225 // FIXME: This is not correct. 257 226 // See Microsoft documentation and <http://www.quirksmode.org/dom/w3c_events.html>. 258 return m_client X;227 return m_clientLocation.x(); 259 228 } 260 229 … … 263 232 // FIXME: This is not correct. 264 233 // See Microsoft documentation and <http://www.quirksmode.org/dom/w3c_events.html>. 265 return m_client Y;234 return m_clientLocation.y(); 266 235 } 267 236 -
trunk/Source/WebCore/dom/MouseRelatedEvent.h
r82225 r87865 35 35 // Note that these values are adjusted to counter the effects of zoom, so that values 36 36 // exposed via DOM APIs are invariant under zooming. 37 int screenX() const { return m_screenX; } 38 int screenY() const { return m_screenY; } 39 int clientX() const { return m_clientX; } 40 int clientY() const { return m_clientY; } 37 int screenX() const { return m_screenLocation.x(); } 38 int screenY() const { return m_screenLocation.y(); } 39 const IntPoint& screenLocation() const { return m_screenLocation; } 40 int clientX() const { return m_clientLocation.x(); } 41 int clientY() const { return m_clientLocation.y(); } 42 const IntPoint& clientLocation() const { return m_clientLocation; } 41 43 int layerX(); 42 44 int layerY(); … … 46 48 virtual int pageX() const; 47 49 virtual int pageY() const; 50 virtual const IntPoint& pageLocation() const; 48 51 int x() const; 49 52 int y() const; … … 51 54 // Page point in "absolute" coordinates (i.e. post-zoomed, page-relative coords, 52 55 // usable with RenderObject::absoluteToLocal). 53 IntPointabsoluteLocation() const { return m_absoluteLocation; }56 const IntPoint& absoluteLocation() const { return m_absoluteLocation; } 54 57 void setAbsoluteLocation(const IntPoint& p) { m_absoluteLocation = p; } 55 58 … … 57 60 MouseRelatedEvent(); 58 61 MouseRelatedEvent(const AtomicString& type, bool canBubble, bool cancelable, PassRefPtr<AbstractView>, 59 int detail, int screenX, int screenY, int pageX, int pageY,62 int detail, const IntPoint& screenLocation, const IntPoint& windowLocation, 60 63 bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, bool isSimulated = false); 61 64 62 65 void initCoordinates(); 63 void initCoordinates( int clientX, int clientY);66 void initCoordinates(const IntPoint& clientLocation); 64 67 virtual void receivedTarget(); 65 68 … … 68 71 69 72 // Expose these so MouseEvent::initMouseEvent can set them. 70 int m_screenX; 71 int m_screenY; 72 int m_clientX; 73 int m_clientY; 73 IntPoint m_screenLocation; 74 IntPoint m_clientLocation; 74 75 75 76 private: 76 int m_pageX; 77 int m_pageY; 78 int m_layerX; 79 int m_layerY; 80 int m_offsetX; 81 int m_offsetY; 77 IntPoint m_pageLocation; 78 IntPoint m_layerLocation; 79 IntPoint m_offsetLocation; 82 80 IntPoint m_absoluteLocation; 83 81 bool m_isSimulated; -
trunk/Source/WebCore/dom/TouchEvent.cpp
r86135 r87865 41 41 PassRefPtr<AbstractView> view, int screenX, int screenY, int pageX, int pageY, 42 42 bool ctrlKey, bool altKey, bool shiftKey, bool metaKey) 43 : MouseRelatedEvent(type, true, true, view, 0, screenX, screenY, pageX, pageY,44 ctrlKey, altKey, shiftKey, metaKey)43 : MouseRelatedEvent(type, true, true, view, 0, IntPoint(screenX, screenY), 44 IntPoint(pageX, pageY), ctrlKey, altKey, shiftKey, metaKey) 45 45 , m_touches(touches) 46 46 , m_targetTouches(targetTouches) … … 66 66 m_targetTouches = targetTouches; 67 67 m_changedTouches = changedTouches; 68 m_screenX = screenX; 69 m_screenY = screenY; 68 m_screenLocation = IntPoint(screenX, screenY); 70 69 m_ctrlKey = ctrlKey; 71 70 m_altKey = altKey; 72 71 m_shiftKey = shiftKey; 73 72 m_metaKey = metaKey; 74 initCoordinates( clientX, clientY);73 initCoordinates(IntPoint(clientX, clientY)); 75 74 } 76 75 -
trunk/Source/WebCore/dom/WheelEvent.cpp
r83298 r87865 33 33 34 34 WheelEvent::WheelEvent() 35 : m_wheelDeltaX(0) 36 , m_wheelDeltaY(0) 37 , m_rawDeltaX(0) 38 , m_rawDeltaY(0) 39 , m_granularity(Pixel) 35 : m_granularity(Pixel) 40 36 { 41 37 } 42 38 43 WheelEvent::WheelEvent( float wheelTicksX, float wheelTicksY, float rawDeltaX, float rawDeltaY,39 WheelEvent::WheelEvent(const FloatPoint& wheelTicks, const FloatPoint& rawDelta, 44 40 Granularity granularity, PassRefPtr<AbstractView> view, 45 int screenX, int screenY, int pageX, int pageY,41 const IntPoint& screenLocation, const IntPoint& pageLocation, 46 42 bool ctrlKey, bool altKey, bool shiftKey, bool metaKey) 47 43 : MouseRelatedEvent(eventNames().mousewheelEvent, 48 true, true, view, 0, screen X, screenY, pageX, pageY,44 true, true, view, 0, screenLocation, pageLocation, 49 45 ctrlKey, altKey, shiftKey, metaKey) 50 , m_wheelDeltaX(lroundf(wheelTicksX * 120)) 51 , m_wheelDeltaY(lroundf(wheelTicksY * 120)) // Normalize to the Windows 120 multiple 52 , m_rawDeltaX(rawDeltaX) 53 , m_rawDeltaY(rawDeltaY) 46 , m_wheelDelta(IntPoint(static_cast<int>(wheelTicks.x() * 120), static_cast<int>(wheelTicks.y() * 120))) 47 , m_rawDelta(roundedIntPoint(rawDelta)) 54 48 , m_granularity(granularity) 55 49 { … … 65 59 initUIEvent(eventNames().mousewheelEvent, true, true, view, 0); 66 60 67 m_screenX = screenX; 68 m_screenY = screenY; 61 m_screenLocation = IntPoint(screenX, screenY); 69 62 m_ctrlKey = ctrlKey; 70 63 m_altKey = altKey; … … 73 66 74 67 // Normalize to the Windows 120 multiple 75 m_wheelDeltaX = rawDeltaX * 120; 76 m_wheelDeltaY = rawDeltaY * 120; 68 m_wheelDelta = IntPoint(rawDeltaX * 120, rawDeltaY * 120); 77 69 78 m_rawDeltaX = rawDeltaX; 79 m_rawDeltaY = rawDeltaY; 70 m_rawDelta = IntPoint(rawDeltaX, rawDeltaY); 80 71 m_granularity = Pixel; 81 72 82 initCoordinates( pageX, pageY);73 initCoordinates(IntPoint(pageX, pageY)); 83 74 } 84 75 … … 106 97 return; 107 98 108 setEvent(WheelEvent::create( event.wheelTicksX(), event.wheelTicksY(), event.deltaX(), event.deltaY(), granularity(event),109 view, event.globalX(), event.globalY(), event.x(), event.y(), event.ctrlKey(), event.altKey(), event.shiftKey(), event.metaKey()));99 setEvent(WheelEvent::create(FloatPoint(event.wheelTicksX(), event.wheelTicksY()), FloatPoint(event.deltaX(), event.deltaY()), granularity(event), 100 view, IntPoint(event.globalX(), event.globalY()), IntPoint(event.x(), event.y()), event.ctrlKey(), event.altKey(), event.shiftKey(), event.metaKey())); 110 101 111 102 } -
trunk/Source/WebCore/dom/WheelEvent.h
r83298 r87865 25 25 #define WheelEvent_h 26 26 27 #include "FloatPoint.h" 27 28 #include "MouseRelatedEvent.h" 28 29 … … 38 39 return adoptRef(new WheelEvent); 39 40 } 40 static PassRefPtr<WheelEvent> create( float wheelTicksX, float wheelTicksY,41 float rawDeltaX, float rawDeltaY, Granularity granularity, PassRefPtr<AbstractView> view,42 int screenX, int screenY, int pageX, int pageY,41 static PassRefPtr<WheelEvent> create(const FloatPoint& wheelTicks, 42 const FloatPoint& rawDelta, Granularity granularity, PassRefPtr<AbstractView> view, 43 const IntPoint& screenLocation, const IntPoint& pageLocation, 43 44 bool ctrlKey, bool altKey, bool shiftKey, bool metaKey) 44 45 { 45 return adoptRef(new WheelEvent(wheelTicksX, wheelTicksY, rawDeltaX, rawDeltaY, 46 granularity, view, screenX, screenY, pageX, pageY, 47 ctrlKey, altKey, shiftKey, metaKey)); 46 return adoptRef(new WheelEvent(wheelTicks, rawDelta, granularity, view, 47 screenLocation, pageLocation, ctrlKey, altKey, shiftKey, metaKey)); 48 48 } 49 49 … … 56 56 bool ctrlKey, bool altKey, bool shiftKey, bool metaKey); 57 57 58 int wheelDelta() const { if (m_wheelDeltaY == 0) return m_wheelDeltaX; return m_wheelDeltaY; }59 int wheelDeltaX() const { return m_wheelDelta X; }60 int wheelDeltaY() const { return m_wheelDelta Y; }61 int rawDeltaX() const { return m_rawDelta X; }62 int rawDeltaY() const { return m_rawDelta Y; }58 int wheelDelta() const { return m_wheelDelta.y() ? m_wheelDelta.y() : m_wheelDelta.x(); } 59 int wheelDeltaX() const { return m_wheelDelta.x(); } 60 int wheelDeltaY() const { return m_wheelDelta.y(); } 61 int rawDeltaX() const { return m_rawDelta.x(); } 62 int rawDeltaY() const { return m_rawDelta.y(); } 63 63 Granularity granularity() const { return m_granularity; } 64 64 65 65 // Needed for Objective-C legacy support 66 bool isHorizontal() const { return m_wheelDelta X; }66 bool isHorizontal() const { return m_wheelDelta.x(); } 67 67 68 68 private: 69 69 WheelEvent(); 70 WheelEvent( float wheelTicksX, float wheelTicksY, float rawDeltaX, float rawDeltaY,70 WheelEvent(const FloatPoint& wheelTicks, const FloatPoint& rawDelta, 71 71 Granularity granularity, PassRefPtr<AbstractView>, 72 int screenX, int screenY, int pageX, int pageY,72 const IntPoint& screenLocation, const IntPoint& pageLocation, 73 73 bool ctrlKey, bool altKey, bool shiftKey, bool metaKey); 74 74 75 75 virtual bool isWheelEvent() const; 76 77 int m_wheelDeltaX;78 int m_wheelDeltaY;79 76 80 int m_rawDeltaX;81 int m_rawDeltaY;77 IntPoint m_wheelDelta; 78 IntPoint m_rawDelta; 82 79 Granularity m_granularity; 83 80 }; -
trunk/Source/WebCore/platform/graphics/IntPoint.h
r87303 r87865 28 28 29 29 #include "IntSize.h" 30 #include <wtf/MathExtras.h> 30 31 31 32 #if PLATFORM(QT) … … 93 94 void move(const IntPoint& offset) { move(offset.x(), offset.y()); } 94 95 void move(int dx, int dy) { m_x += dx; m_y += dy; } 96 void scale(float sx, float sy) 97 { 98 m_x = lroundf(static_cast<float>(m_x * sx)); 99 m_y = lroundf(static_cast<float>(m_y * sy)); 100 } 95 101 96 102 IntPoint expandedTo(const IntPoint& other) const
Note:
See TracChangeset
for help on using the changeset viewer.