MCPcopy Create free account
hub / github.com/SpartanJ/eepp / onMessage

Method onMessage

src/eepp/ui/tools/uiimageviewer.cpp:218–292  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

216}
217
218Uint32 UIImageViewer::onMessage( const NodeMessage* msg ) {
219 if ( msg->getMsg() == NodeMessage::MouseDown ) {
220 if ( ( msg->getFlags() & EE_BUTTON_LMASK ) && getEventDispatcher() &&
221 getEventDispatcher()->getNodeDragging() == nullptr ) {
222 mImage->setFocus();
223 mImage->startDragging( getEventDispatcher()->getMousePosf() );
224 return 1;
225 }
226 if ( msg->getFlags() & EE_BUTTON_RMASK ) {
227 Line2f line( getEventDispatcher()->getMousePosf(),
228 mImage->getScreenPos() + mImage->getPixelsSize() * 0.5f );
229 mImage->setRotation( line.getAngle() );
230 return 1;
231 }
232 if ( msg->getFlags() & EE_BUTTON_MMASK ) {
233 if ( !mMouseMiddlePressing ) {
234 mMouseMiddlePressing = true;
235 mInitialScale = mImage->getScale().x;
236 mMouseMiddleStartClick = getEventDispatcher()->getMousePosf();
237 Vector2f localPos( mImage->convertToNodeSpace( mMouseMiddleStartClick ) );
238 auto size( mImage->getPixelsSize() );
239 localPos.x = eeclamp( localPos.x, 0.f, size.x );
240 localPos.y = eeclamp( localPos.y, 0.f, size.y );
241 mImage->setScaleOriginPointPixels( { localPos.x, localPos.y } );
242 }
243 }
244 } else if ( msg->getMsg() == NodeMessage::MouseMove ) {
245 if ( msg->getFlags() & EE_BUTTON_MMASK ) {
246 mMouseMiddlePressing = true;
247 Vector2f v1( mMouseMiddleStartClick );
248 Vector2f v2( getEventDispatcher()->getMousePosf() );
249 Line2f l1( v1, v2 );
250 Float dist = eeabs( v1.y - v2.y ) * 0.01f;
251 Float ang = l1.getAngle();
252 if ( dist ) {
253 if ( ang >= 0.0f && ang <= 180.0f ) {
254 Float scale = eemax( mInitialScale - dist, mMinScale );
255 mImage->setScale( scale );
256 } else {
257 Float scale = eemin( mInitialScale + dist, mMaxScale );
258 mImage->setScale( scale );
259 }
260 }
261 }
262 } else if ( msg->getMsg() == NodeMessage::MouseUp ) {
263 if ( msg->getFlags() & EE_BUTTON_MMASK ) {
264 mMouseMiddlePressing = false;
265 }
266
267 if ( getInput()->isKeyModPressed() ) {
268 Vector2f localPos( mImage->convertToNodeSpace( getEventDispatcher()->getMousePosf() ) );
269 auto size( mImage->getPixelsSize() );
270 localPos.x = eeclamp( localPos.x, 0.f, size.x );
271 localPos.y = eeclamp( localPos.y, 0.f, size.y );
272 OriginPoint origin( { localPos.x, localPos.y } );
273
274 if ( msg->getFlags() & EE_BUTTON_WUMASK ) {
275 mImage->setScale( eemin( mMaxScale, mImage->getScale().x + mMinScale ), origin );

Callers

nothing calls this directly

Calls 15

eeclampFunction · 0.85
eeabsFunction · 0.85
eemaxFunction · 0.85
eeminFunction · 0.85
getFlagsMethod · 0.80
getNodeDraggingMethod · 0.80
startDraggingMethod · 0.80
getMousePosfMethod · 0.80
convertToNodeSpaceMethod · 0.80
isKeyModPressedMethod · 0.80
setFocusMethod · 0.45

Tested by

no test coverage detected