blob: 176ae4be1dc5548b31419f907d0d6837528d0714 [file] [log] [blame]
// Copyright 2016 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 CORE_FPDFAPI_RENDER_CPDF_RENDEROPTIONS_H_
#define CORE_FPDFAPI_RENDER_CPDF_RENDEROPTIONS_H_
#include <stdint.h>
#include "core/fpdfapi/page/cpdf_occontext.h"
#include "core/fpdfapi/page/cpdf_pageobject.h"
#include "core/fxcrt/retain_ptr.h"
#include "core/fxge/dib/fx_dib.h"
class CPDF_Dictionary;
class CPDF_RenderOptions {
public:
enum Type : uint8_t { kNormal = 0, kGray, kAlpha, kForcedColor };
struct Options {
Options();
Options(const Options& rhs);
Options& operator=(const Options& rhs);
bool bClearType = false;
bool bNoNativeText = false;
bool bForceHalftone = false;
bool bRectAA = false;
bool bBreakForMasks = false;
bool bNoTextSmooth = false;
bool bNoPathSmooth = false;
bool bNoImageSmooth = false;
bool bLimitedImageCache = false;
bool bConvertFillToStroke = false;
};
struct ColorScheme {
FX_ARGB path_fill_color;
FX_ARGB path_stroke_color;
FX_ARGB text_fill_color;
FX_ARGB text_stroke_color;
};
CPDF_RenderOptions();
CPDF_RenderOptions(const CPDF_RenderOptions& rhs);
~CPDF_RenderOptions();
FX_ARGB TranslateColor(FX_ARGB argb) const;
FX_ARGB TranslateObjectFillColor(FX_ARGB argb,
CPDF_PageObject::Type object_type) const;
FX_ARGB TranslateObjectStrokeColor(FX_ARGB argb,
CPDF_PageObject::Type object_type) const;
void SetColorScheme(const ColorScheme& color_scheme) {
color_scheme_ = color_scheme;
}
void SetColorMode(Type mode) { color_mode_ = mode; }
bool ColorModeIs(Type mode) const { return color_mode_ == mode; }
const Options& GetOptions() const { return options_; }
Options& GetOptions() { return options_; }
uint32_t GetCacheSizeLimit() const;
bool CheckOCGDictVisible(const CPDF_Dictionary* pOC) const;
bool CheckPageObjectVisible(const CPDF_PageObject* pPageObj) const;
void SetDrawAnnots(bool draw) { draw_annots_ = draw; }
bool GetDrawAnnots() const { return draw_annots_; }
void SetOCContext(RetainPtr<CPDF_OCContext> context) {
oc_context_ = context;
}
private:
Type color_mode_ = kNormal;
bool draw_annots_ = false;
Options options_;
ColorScheme color_scheme_ = {};
RetainPtr<CPDF_OCContext> oc_context_;
};
#endif // CORE_FPDFAPI_RENDER_CPDF_RENDEROPTIONS_H_