70 lines
2.0 KiB
C++
70 lines
2.0 KiB
C++
// Copyright 2020 The PDFium Authors
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
|
|
|
|
#ifndef FPDFSDK_PWL_IPWL_FILLERNOTIFY_H_
|
|
#define FPDFSDK_PWL_IPWL_FILLERNOTIFY_H_
|
|
|
|
#include <memory>
|
|
#include <utility>
|
|
|
|
#include "core/fxcrt/mask.h"
|
|
#include "core/fxcrt/widestring.h"
|
|
#include "public/fpdf_fwlevent.h"
|
|
|
|
class CFX_FloatRect;
|
|
|
|
class IPWL_FillerNotify {
|
|
public:
|
|
// These must match the values in public/fpdf_formfill.h
|
|
enum CursorStyle {
|
|
kArrow = 0,
|
|
kNESW = 1,
|
|
kNWSE = 2,
|
|
kVBeam = 3,
|
|
kHBeam = 4,
|
|
kHand = 5,
|
|
};
|
|
|
|
class PerWindowData {
|
|
public:
|
|
virtual ~PerWindowData() = default;
|
|
virtual std::unique_ptr<PerWindowData> Clone() const = 0;
|
|
};
|
|
|
|
virtual ~IPWL_FillerNotify() = default;
|
|
|
|
virtual void InvalidateRect(PerWindowData* pWidgetData,
|
|
const CFX_FloatRect& rect) = 0;
|
|
virtual void OutputSelectedRect(PerWindowData* pWidgetData,
|
|
const CFX_FloatRect& rect) = 0;
|
|
virtual bool IsSelectionImplemented() const = 0;
|
|
virtual void SetCursor(CursorStyle nCursorStyle) = 0;
|
|
|
|
// Must write to |bBottom| and |fPopupRet|.
|
|
virtual void QueryWherePopup(const PerWindowData* pAttached,
|
|
float fPopupMin,
|
|
float fPopupMax,
|
|
bool* bBottom,
|
|
float* fPopupRet) = 0;
|
|
|
|
virtual std::pair<bool, bool> OnBeforeKeyStroke(
|
|
const PerWindowData* pAttached,
|
|
WideString& strChange,
|
|
const WideString& strChangeEx,
|
|
int nSelStart,
|
|
int nSelEnd,
|
|
bool bKeyDown,
|
|
Mask<FWL_EVENTFLAG> nFlag) = 0;
|
|
|
|
virtual bool OnPopupPreOpen(const PerWindowData* pAttached,
|
|
Mask<FWL_EVENTFLAG> nFlag) = 0;
|
|
|
|
virtual bool OnPopupPostOpen(const PerWindowData* pAttached,
|
|
Mask<FWL_EVENTFLAG> nFlag) = 0;
|
|
};
|
|
|
|
#endif // FPDFSDK_PWL_IPWL_FILLERNOTIFY_H_
|