#include "xfa/fgas/graphics/cfgas_gegraphics.h"
#include <math.h>
#include <array>
#include <iterator>
#include <memory>
#include <utility>
#include "core/fxcrt/check.h"
#include "core/fxcrt/fx_system.h"
#include "core/fxcrt/span_util.h"
#include "core/fxcrt/stl_util.h"
#include "core/fxge/cfx_defaultrenderdevice.h"
#include "core/fxge/cfx_renderdevice.h"
#include "core/fxge/cfx_unicodeencoding.h"
#include "core/fxge/dib/cfx_dibitmap.h"
#include "xfa/fgas/graphics/cfgas_gecolor.h"
#include "xfa/fgas/graphics/cfgas_gepath.h"
#include "xfa/fgas/graphics/cfgas_gepattern.h"
#include "xfa/fgas/graphics/cfgas_geshading.h"
namespace {
struct FX_HATCHDATA { … };
constexpr auto kHatchBitmapData = …;
const FX_HATCHDATA kHatchPlaceHolder = …;
const FX_HATCHDATA& GetHatchBitmapData(size_t index) { … }
}
CFGAS_GEGraphics::CFGAS_GEGraphics(CFX_RenderDevice* renderDevice)
: … { … }
CFGAS_GEGraphics::~CFGAS_GEGraphics() = default;
void CFGAS_GEGraphics::SaveGraphState() { … }
void CFGAS_GEGraphics::RestoreGraphState() { … }
void CFGAS_GEGraphics::SetLineCap(CFX_GraphStateData::LineCap lineCap) { … }
void CFGAS_GEGraphics::SetLineDash(float dashPhase,
pdfium::span<const float> dashArray) { … }
void CFGAS_GEGraphics::SetSolidLineDash() { … }
void CFGAS_GEGraphics::SetLineWidth(float lineWidth) { … }
void CFGAS_GEGraphics::EnableActOnDash() { … }
void CFGAS_GEGraphics::SetStrokeColor(const CFGAS_GEColor& color) { … }
void CFGAS_GEGraphics::SetFillColor(const CFGAS_GEColor& color) { … }
void CFGAS_GEGraphics::StrokePath(const CFGAS_GEPath& path,
const CFX_Matrix& matrix) { … }
void CFGAS_GEGraphics::FillPath(const CFGAS_GEPath& path,
CFX_FillRenderOptions::FillType fill_type,
const CFX_Matrix& matrix) { … }
void CFGAS_GEGraphics::ConcatMatrix(const CFX_Matrix& matrix) { … }
const CFX_Matrix* CFGAS_GEGraphics::GetMatrix() const { … }
CFX_RectF CFGAS_GEGraphics::GetClipRect() const { … }
void CFGAS_GEGraphics::SetClipRect(const CFX_RectF& rect) { … }
CFX_RenderDevice* CFGAS_GEGraphics::GetRenderDevice() { … }
void CFGAS_GEGraphics::RenderDeviceStrokePath(const CFGAS_GEPath& path,
const CFX_Matrix& matrix) { … }
void CFGAS_GEGraphics::RenderDeviceFillPath(
const CFGAS_GEPath& path,
CFX_FillRenderOptions::FillType fill_type,
const CFX_Matrix& matrix) { … }
void CFGAS_GEGraphics::FillPathWithPattern(
const CFGAS_GEPath& path,
const CFX_FillRenderOptions& fill_options,
const CFX_Matrix& matrix) { … }
void CFGAS_GEGraphics::FillPathWithShading(
const CFGAS_GEPath& path,
const CFX_FillRenderOptions& fill_options,
const CFX_Matrix& matrix) { … }
void CFGAS_GEGraphics::SetDIBitsWithMatrix(RetainPtr<CFX_DIBBase> source,
const CFX_Matrix& matrix) { … }
CFGAS_GEGraphics::TInfo::TInfo() = default;
CFGAS_GEGraphics::TInfo::TInfo(const TInfo& info) = default;
CFGAS_GEGraphics::TInfo& CFGAS_GEGraphics::TInfo::operator=(
const TInfo& other) = default;
CFGAS_GEGraphics::StateRestorer::StateRestorer(CFGAS_GEGraphics* graphics)
: … { … }
CFGAS_GEGraphics::StateRestorer::~StateRestorer() { … }