blob: efe0768b588680affb99ab6338e727d9022808db [file] [log] [blame] [edit]
// 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;
};
struct BeforeKeystrokeResult {
bool rc;
bool exit;
};
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 BeforeKeystrokeResult 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_