# OptionalContentContext Class

> Defines the context for optional content in a PDF.

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

```cpp
class OptionalContentContext
```

**Namespace:** `datalogics_interface`

## Description

Defines the context for optional content in a PDF.

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.4.0/class/DrawParams.md), [`OptionalContentContext`](https://docs.datalogics.com/apdfl21/ModernCPP/21.4.0/class/OptionalContentContext.md)

**Uses types:** [`OCDrawingPolicy`](https://docs.datalogics.com/apdfl21/ModernCPP/21.4.0/enum/OCDrawingPolicy.md), [`OptionalContentContext`](https://docs.datalogics.com/apdfl21/ModernCPP/21.4.0/class/OptionalContentContext.md), [`OptionalContentGroup`](https://docs.datalogics.com/apdfl21/ModernCPP/21.4.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.4.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.4.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.4.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.4.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.4.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.4.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.4.0/class/OptionalContentContext.md))

**Returns:** [`OptionalContentContext &`](https://docs.datalogics.com/apdfl21/ModernCPP/21.4.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.4.0/class/OptionalContentContext.md)): The OptionalContentContext to compare with.

**Returns:** `bool`

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

Determines whether this OptionalContentContext is equal to another.

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.4.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.4.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.4.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.

Returns a string representation of this OptionalContentContext.

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