14d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Copyright 2016 PDFium Authors. All rights reserved. 24d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be 34d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// found in the LICENSE file. 44d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 54d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 64d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#ifndef CORE_FXGE_CFX_CLIPRGN_H_ 8d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define CORE_FXGE_CFX_CLIPRGN_H_ 94d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 10d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "core/fxcrt/fx_coordinates.h" 11d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "core/fxcrt/retain_ptr.h" 12d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 13d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannclass CFX_DIBitmap; 144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CFX_ClipRgn { 164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann public: 174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann enum ClipType { RectI, MaskF }; 184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ClipRgn(int device_width, int device_height); 204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ClipRgn(const CFX_ClipRgn& src); 214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ~CFX_ClipRgn(); 224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ClipType GetType() const { return m_Type; } 244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const FX_RECT& GetBox() const { return m_Box; } 25d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann RetainPtr<CFX_DIBitmap> GetMask() const { return m_Mask; } 264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void Reset(const FX_RECT& rect); 284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void IntersectRect(const FX_RECT& rect); 29d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann void IntersectMaskF(int left, int top, const RetainPtr<CFX_DIBitmap>& Mask); 304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann private: 32d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann void IntersectMaskRect(FX_RECT rect, 33d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann FX_RECT mask_box, 34d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann const RetainPtr<CFX_DIBitmap>& Mask); 354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ClipType m_Type; 374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_RECT m_Box; 38d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann RetainPtr<CFX_DIBitmap> m_Mask; 394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann}; 404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 41d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#endif // CORE_FXGE_CFX_CLIPRGN_H_ 42