| // Copyright 2020 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. |
| |
| #include "core/fxge/cfx_fillrenderoptions.h" |
| |
| #include "core/fxcrt/fx_system.h" |
| #include "core/fxge/render_defines.h" |
| #include "third_party/base/no_destructor.h" |
| |
| CFX_FillRenderOptions::CFX_FillRenderOptions() = default; |
| |
| CFX_FillRenderOptions::CFX_FillRenderOptions( |
| CFX_FillRenderOptions::FillType fill_type) |
| : fill_type(fill_type) {} |
| |
| CFX_FillRenderOptions::FillType GetFillType(int fill_type) { |
| ASSERT(fill_type >= 0); |
| ASSERT(fill_type <= 2); |
| return static_cast<CFX_FillRenderOptions::FillType>(fill_type); |
| } |
| |
| CFX_FillRenderOptions GetFillOptionsFromIntegerFlags(int flags) { |
| CFX_FillRenderOptions options(GetFillType(flags & 3)); |
| if (flags & FX_STROKE_ADJUST) |
| options.adjust_stroke = true; |
| if (flags & FXFILL_NOPATHSMOOTH) |
| options.aliased_path = true; |
| if (flags & FXFILL_FULLCOVER) |
| options.full_cover = true; |
| if (flags & FXFILL_RECT_AA) |
| options.rect_aa = true; |
| if (flags & FX_FILL_STROKE) |
| options.stroke = true; |
| if (flags & FX_STROKE_TEXT_MODE) |
| options.stroke_text_mode = true; |
| if (flags & FX_FILL_TEXT_MODE) |
| options.text_mode = true; |
| if (flags & FX_ZEROAREA_FILL) |
| options.zero_area = true; |
| return options; |
| } |
| |
| int GetIntegerFlagsFromFillOptions(const CFX_FillRenderOptions& options) { |
| int flags = static_cast<int>(options.fill_type); |
| if (options.adjust_stroke) |
| flags |= FX_STROKE_ADJUST; |
| if (options.aliased_path) |
| flags |= FXFILL_NOPATHSMOOTH; |
| if (options.full_cover) |
| flags |= FXFILL_FULLCOVER; |
| if (options.rect_aa) |
| flags |= FXFILL_RECT_AA; |
| if (options.stroke) |
| flags |= FX_FILL_STROKE; |
| if (options.stroke_text_mode) |
| flags |= FX_STROKE_TEXT_MODE; |
| if (options.text_mode) |
| flags |= FX_FILL_TEXT_MODE; |
| if (options.zero_area) |
| flags |= FX_ZEROAREA_FILL; |
| return flags; |
| } |