// Copyright 2018 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.

#ifndef CORE_FPDFAPI_PAGE_CPDF_TRANSPARENCY_H_
#define CORE_FPDFAPI_PAGE_CPDF_TRANSPARENCY_H_

class CPDF_Transparency {
 public:
  CPDF_Transparency();

  CPDF_Transparency(const CPDF_Transparency& other);
  CPDF_Transparency& operator=(const CPDF_Transparency& other);

  bool IsGroup() const { return m_bGroup; }
  bool IsIsolated() const { return m_bIsolated; }

  void SetGroup() { m_bGroup = true; }
  void SetIsolated() { m_bIsolated = true; }

 private:
  bool m_bGroup = false;
  bool m_bIsolated = false;
};

#endif  // CORE_FPDFAPI_PAGE_CPDF_TRANSPARENCY_H_
