# OptionalContentContext Class

> Defines the context for optional content in a PDF.

- Product: Adobe PDF Library 21
- Language: Modern C++
- Version: 21.2.0
- HTML page: https://docs.datalogics.com/apdfl21/ModernCPP/21.2.0/class/OptionalContentContext
- Version index: https://docs.datalogics.com/apdfl21/ModernCPP/21.2.0/llms.txt

```cpp
class OptionalContentContext
```

**Namespace:** `datalogics_interface`

## Description

An Optional Content Context is a status object that defines the context for optional content within a document.

The context tracks the On/Off status for Optional Content Groups (layers) within a document. It contains flags that control whether to display content that is marked as optional.

**Referenced by:** [`DrawParams`](https://docs.datalogics.com/apdfl21/ModernCPP/21.2.0/class/DrawParams.md), [`OptionalContentContext`](https://docs.datalogics.com/apdfl21/ModernCPP/21.2.0/class/OptionalContentContext.md)

**Uses types:** [`OCDrawingPolicy`](https://docs.datalogics.com/apdfl21/ModernCPP/21.2.0/enum/OCDrawingPolicy.md), [`OptionalContentContext`](https://docs.datalogics.com/apdfl21/ModernCPP/21.2.0/class/OptionalContentContext.md), [`OptionalContentGroup`](https://docs.datalogics.com/apdfl21/ModernCPP/21.2.0/class/OptionalContentGroup.md)

## Constructors

### OptionalContentContext

```cpp
datalogics_interface::OptionalContentContext::OptionalContentContext(const Document &document)
```

*constructor*

**Parameters**

- `document` ([`const Document &`](https://docs.datalogics.com/apdfl21/ModernCPP/21.2.0/class/Document.md)): The document for which to create a context.

Creates a context object that represents an optional-content state of the document, using the current state as the initial state for each group (OCG), as determined by the document's optional-content configuration.

### OptionalContentContext

```cpp
datalogics_interface::OptionalContentContext::OptionalContentContext(OptionalContentContext &&) noexcept
```

*constructor*

**Parameters**

- (unnamed) ([`OptionalContentContext &&`](https://docs.datalogics.com/apdfl21/ModernCPP/21.2.0/class/OptionalContentContext.md))

### ~OptionalContentContext

```cpp
datalogics_interface::OptionalContentContext::~OptionalContentContext()
```

*destructor*

## Methods

### clone

```cpp
std::unique_ptr< OptionalContentContext > datalogics_interface::OptionalContentContext::clone()
```

**Returns:** [`std::unique_ptr< OptionalContentContext >`](https://docs.datalogics.com/apdfl21/ModernCPP/21.2.0/class/OptionalContentContext.md)

A copy of the original optional content context.

Makes a copy of the optional content context.

### get_draw_optional_content

```cpp
OCDrawingPolicy datalogics_interface::OptionalContentContext::get_draw_optional_content()
```

**Returns:** [`OCDrawingPolicy`](https://docs.datalogics.com/apdfl21/ModernCPP/21.2.0/enum/OCDrawingPolicy.md)

The drawing policy for optional content in this optional content context.

Gets the drawing policy for the optional content in this optional content context.

### get_ocg_states

```cpp
std::vector< bool > datalogics_interface::OptionalContentContext::get_ocg_states(const std::vector< OptionalContentGroup > &ocgs)
```

**Parameters**

- `ocgs` ([`const std::vector< OptionalContentGroup > &`](https://docs.datalogics.com/apdfl21/ModernCPP/21.2.0/class/OptionalContentGroup.md)): A list of optional-content groups whose states are obtained.

**Returns:** `std::vector< bool >`

An array of OCG states corresponding to the array of OCGs, true for ON and false for OFF.

Gets the ON-OFF states for the given optional-content groups (OCGs) in the given optional-content context.

### get_state_of_ocg

```cpp
bool datalogics_interface::OptionalContentContext::get_state_of_ocg(OptionalContentGroup &ocg)
```

**Parameters**

- `ocg` ([`OptionalContentGroup &`](https://docs.datalogics.com/apdfl21/ModernCPP/21.2.0/class/OptionalContentGroup.md)): The optional content group whose state will be retrieved.

**Returns:** `bool`

true if the OCG is ON, false if it is OFF.

Gets the ON-OFF state for the given optional content group (OCG) in this optional content context.

### operator=

```cpp
OptionalContentContext & datalogics_interface::OptionalContentContext::operator=(OptionalContentContext &&) noexcept
```

**Parameters**

- (unnamed) ([`OptionalContentContext &&`](https://docs.datalogics.com/apdfl21/ModernCPP/21.2.0/class/OptionalContentContext.md))

**Returns:** [`OptionalContentContext &`](https://docs.datalogics.com/apdfl21/ModernCPP/21.2.0/class/OptionalContentContext.md)

### operator==

```cpp
bool datalogics_interface::OptionalContentContext::operator==(const OptionalContentContext &other) const
```

**Parameters**

- `other` ([`const OptionalContentContext &`](https://docs.datalogics.com/apdfl21/ModernCPP/21.2.0/class/OptionalContentContext.md)): The OptionalContentContext to compare with.

**Returns:** `bool`

true if the two objects refer to the same context, false otherwise.

Two OptionalContentContexts are considered equal if they refer to the same underlying optional content context object.

### set_draw_optional_content

```cpp
void datalogics_interface::OptionalContentContext::set_draw_optional_content(OCDrawingPolicy policy)
```

**Parameters**

- `policy` ([`OCDrawingPolicy`](https://docs.datalogics.com/apdfl21/ModernCPP/21.2.0/enum/OCDrawingPolicy.md)): The new drawing policy for optional content in this optional content context.

**Returns:** `void`

Sets the drawing policy for the optional content in this optional content context.

### set_ocg_states

```cpp
void datalogics_interface::OptionalContentContext::set_ocg_states(const std::vector< OptionalContentGroup > &ocgs, const std::vector< bool > &new_states)
```

**Parameters**

- `ocgs` ([`const std::vector< OptionalContentGroup > &`](https://docs.datalogics.com/apdfl21/ModernCPP/21.2.0/class/OptionalContentGroup.md)): A list of optional-content groups.
- `new_states` (`const std::vector< bool > &`): A list of new OCG states corresponding to the list of OCGs, true for ON and false for OFF. The list must contain as many states as there are non-NULL OCGs in the pdocgs list.

**Returns:** `void`

Sets the ON-OFF states for the given optional-content groups (OCGs) in the given optional-content context. The newStates vector must be large enough to hold as many Boolean values as there are OCGs.

### set_state_of_ocg

```cpp
void datalogics_interface::OptionalContentContext::set_state_of_ocg(OptionalContentGroup &ocg, bool new_value)
```

**Parameters**

- `ocg` ([`OptionalContentGroup &`](https://docs.datalogics.com/apdfl21/ModernCPP/21.2.0/class/OptionalContentGroup.md)): The optional content group whose state will be set.
- `new_value` (`bool`): The new ON-OFF state for the optional content group.

**Returns:** `void`

Sets the ON-OFF state for the given optional content group (OCG) in this optional content context.

### to_string

```cpp
std::string datalogics_interface::OptionalContentContext::to_string()
```

**Returns:** `std::string`

A string describing the state of all optional content groups in this context.

The string lists all optional content groups in the document along with their ON/OFF states in this context.
