// Copyright 2014 PDFium Authors. All rights reserved.
// 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 PUBLIC_FPDF_FLATTEN_H_
#define PUBLIC_FPDF_FLATTEN_H_

#include "fpdfview.h"

// Result codes.
#define FLATTEN_FAIL            0   // Flatten operation failed.
#define FLATTEN_SUCCESS         1   // Flatten operation succeed.
#define FLATTEN_NOTHINGTODO     2   // There is nothing to be flattened.

// Flags.
#define FLAT_NORMALDISPLAY     0
#define FLAT_PRINT             1

#ifdef __cplusplus
extern "C" {
#endif

// Function: FPDFPage_Flatten
//          Make annotations and form fields become part of the page contents itself.
// Parameters:
//          page  - Handle to the page, as returned by FPDF_LoadPage().
//          nFlag - Intended use of the flattened result: 0 for normal display, 1 for printing.
// Return value:
//          Either FLATTEN_FAIL, FLATTEN_SUCCESS, or FLATTEN_NOTHINGTODO (see above).
// Comments:
//          Currently, all failures return FLATTEN_FAIL, with no indication for the reason
//          for the failure. The method does not support flattening any dynamic XFA fields.
DLLEXPORT int STDCALL FPDFPage_Flatten(FPDF_PAGE page, int nFlag);

#ifdef __cplusplus
}
#endif

#endif  // PUBLIC_FPDF_FLATTEN_H_