MCPcopy Create free account
hub / github.com/ErrorAtLine0/infinipaint / input_mouse_motion_callback

Method input_mouse_motion_callback

src/DrawCamera.cpp:189–212  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

187}
188
189void DrawCamera::input_mouse_motion_callback(World& w, const InputManager::MouseMotionCallbackArgs& motion) {
190 if(!smoothMove.occurring && !isTouchTransforming) {
191 if(isAccurateZooming && startZoomVal != WorldScalar(0)) {
192 WorldScalar zoomFactor(std::pow(1.0 + w.main.conf.dragZoomSpeed, w.main.conf.flipZoomToolDirection ? motion.move.y() : -motion.move.y()));
193 if(zoomFactor < WorldScalar(0.000001))
194 zoomFactor = WorldScalar(0.000001);
195
196 c.scale(zoomFactor);
197 if(c.inverseScale < WorldScalar(0.0001))
198 c.inverseScale = WorldScalar(0.0001);
199 else {
200 WorldVec mVec = startZoomCameraPos - startZoomMousePos;
201 WorldScalar mX = static_cast<WorldScalar>(WorldMultiplier(c.inverseScale) / WorldMultiplier(startZoomVal));
202 c.pos = startZoomMousePos + mVec * mX;
203 }
204
205 checks_after_input(w);
206 }
207 else if(w.drawProg.controls.middleClickHeld || (w.drawProg.controls.leftClickHeld && w.drawProg.drawTool->get_type() == DrawingProgramToolType::PAN)) {
208 c.pos -= c.dir_from_space(motion.move);
209 checks_after_input(w);
210 }
211 }
212}
213
214void DrawCamera::input_mouse_wheel_callback(World& w, const InputManager::MouseWheelCallbackArgs& wheel) {
215 if(!smoothMove.occurring && !isTouchTransforming && wheel.tickAmount.y() && !w.main.g.gui.cursor_obstructed()) {

Callers 1

update_mainMethod · 0.45

Calls 5

scaleMethod · 0.80
dir_from_spaceMethod · 0.80
powFunction · 0.50
yMethod · 0.45
get_typeMethod · 0.45

Tested by

no test coverage detected