//--------------------------------------------------------------------------- void TJS_INTF_METHOD tTVPDrawDevice::RequestInvalidation(const tTVPRect & rect) { tjs_int l = rect.left, t = rect.top, r = rect.right, b = rect.bottom; if(!TransformToPrimaryLayerManager(l, t)) return; if(!TransformToPrimaryLayerManager(r, b)) return; r ++; // 誤差の吸収(本当はもうちょっと厳密にやらないとならないがそれが問題になることはない) b ++; iTVPLayerManager * manager = GetLayerManagerAt(PrimaryLayerManagerIndex); if(!manager) return; manager->RequestInvalidation(tTVPRect(l, t, r, b)); }
//--------------------------------------------------------------------------- void TJS_INTF_METHOD tTVPDrawDevice::OnMouseWheel(tjs_uint32 shift, tjs_int delta, tjs_int x, tjs_int y) { if(!TransformToPrimaryLayerManager(x, y)) return; iTVPLayerManager * manager = GetLayerManagerAt(PrimaryLayerManagerIndex); if(!manager) return; manager->NotifyMouseWheel(shift, delta, x, y); }
//--------------------------------------------------------------------------- void TJS_INTF_METHOD tTVPDrawDevice::OnMouseMove(tjs_int x, tjs_int y, tjs_uint32 flags) { if(!TransformToPrimaryLayerManager(x, y)) return; iTVPLayerManager * manager = GetLayerManagerAt(PrimaryLayerManagerIndex); if(!manager) return; manager->NotifyMouseMove(x, y, flags); }
//--------------------------------------------------------------------------- void TJS_INTF_METHOD tTVPDrawDevice::OnDoubleClick(tjs_int x, tjs_int y) { if(!TransformToPrimaryLayerManager(x, y)) return; iTVPLayerManager * manager = GetLayerManagerAt(PrimaryLayerManagerIndex); if(!manager) return; manager->NotifyDoubleClick(x, y); }
//--------------------------------------------------------------------------- void TJS_INTF_METHOD tTVPDrawDevice::OnTouchMove( tjs_real x, tjs_real y, tjs_real cx, tjs_real cy, tjs_uint32 id ) { if(!TransformToPrimaryLayerManager(x, y)) return; iTVPLayerManager * manager = GetLayerManagerAt(PrimaryLayerManagerIndex); if(!manager) return; manager->NotifyTouchMove(x, y, cx, cy, id); }
//--------------------------------------------------------------------------- void TJS_INTF_METHOD tTVPDrawDevice::GetCursorPos(iTVPLayerManager * manager, tjs_int &x, tjs_int &y) { iTVPLayerManager * primary_manager = GetLayerManagerAt(PrimaryLayerManagerIndex); if(!primary_manager) return; Window->GetCursorPos(x, y); if(primary_manager != manager || !TransformToPrimaryLayerManager(x, y)) { // プライマリレイヤマネージャ以外には座標 0,0 で渡しておく x = 0; y = 0; } }