office-gobmx/include/vcl/GestureEventZoom.hxx
Povilas Kanapickas 474414919c vcl: implement zoom gesture infrastructure
This change implements internal infrastructure to pass zoom gestures
from low-level sources to the consuming GUI widgets. The API follows the
established begin-update-update-...-end event convention that is used on
various platforms.

The API should be enough to support bouth touchpad and touchscreen
gestures, as long as the underlying low-level source exposes enough
information. The hardware drivers usually expose touchpad gestures
already recognized whereas touchscreen gestures come as a set of moving
touchpoints and application needs to figure out their meaning itself.
Many toolkits recognize both and offer a unified higher-level interface
that can be used by us.

Change-Id: I529afcc60459455616de0145fe20077a4dcf3983
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138787
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2022-08-26 09:12:35 +02:00

46 lines
1.1 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
*/
#pragma once
#include <vcl/dllapi.h>
enum class GestureEventZoomType
{
Begin,
Update,
End
};
class VCL_DLLPUBLIC GestureEventZoom
{
public:
sal_Int32 mnX = 0;
sal_Int32 mnY = 0;
GestureEventZoomType meEventType = GestureEventZoomType::Begin;
// The difference of between the current gesture scale and the scale at the beginning of the
// gesture.
double mfScaleDelta = 0;
GestureEventZoom() = default;
GestureEventZoom(sal_Int32 nX, sal_Int32 nY, GestureEventZoomType eEventType,
double fScaleDelta)
: mnX(nX)
, mnY(nY)
, meEventType(eEventType)
, mfScaleDelta(fScaleDelta)
{
}
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */