# CD2DGeometrySink Class

A wrapper for ID2D1GeometrySink.

## Syntax

```
class CD2DGeometrySink;
```

## Members

### Public Constructors

Name | Description |
---|---|

CD2DGeometrySink::CD2DGeometrySink | Constructs a CD2DGeometrySink object from CD2DPathGeometry object. |

CD2DGeometrySink::~CD2DGeometrySink | The destructor. Called when a D2D geometry sink object is being destroyed. |

### Public Methods

Name | Description |
---|---|

CD2DGeometrySink::AddArc | Adds a single arc to the path geometry |

CD2DGeometrySink::AddBezier | Creates a cubic Bezier curve between the current point and the specified end point. |

CD2DGeometrySink::AddBeziers | Creates a sequence of cubic Bezier curves and adds them to the geometry sink. |

CD2DGeometrySink::AddLine | Creates a line segment between the current point and the specified end point and adds it to the geometry sink. |

CD2DGeometrySink::AddLines | Creates a sequence of lines using the specified points and adds them to the geometry sink. |

CD2DGeometrySink::AddQuadraticBezier | Creates a quadratic Bezier curve between the current point and the specified end point. |

CD2DGeometrySink::AddQuadraticBeziers | Adds a sequence of quadratic Bezier segments as an array in a single call. |

CD2DGeometrySink::BeginFigure | Starts a new figure at the specified point. |

CD2DGeometrySink::Close | Closes the geometry sink |

CD2DGeometrySink::EndFigure | Ends the current figure; optionally, closes it. |

CD2DGeometrySink::Get | Returns ID2D1GeometrySink interface |

CD2DGeometrySink::IsValid | Checks geometry sink validity |

CD2DGeometrySink::SetFillMode | Specifies the method used to determine which points are inside the geometry described by this geometry sink and which points are outside. |

CD2DGeometrySink::SetSegmentFlags | Specifies stroke and join options to be applied to new segments added to the geometry sink. |

### Public Operators

Name | Description |
---|---|

CD2DGeometrySink::operator ID2D1GeometrySink* | Returns ID2D1GeometrySink interface |

### Protected Data Members

Name | Description |
---|---|

CD2DGeometrySink::m_pSink | A pointer to an ID2D1GeometrySink. |

## Inheritance Hierarchy

`CD2DGeometrySink`

## Requirements

**Header:** afxrendertarget.h

## CD2DGeometrySink::~CD2DGeometrySink

The destructor. Called when a D2D geometry sink object is being destroyed.

```
virtual ~CD2DGeometrySink();
```

## CD2DGeometrySink::AddArc

Adds a single arc to the path geometry

```
void AddArc(const D2D1_ARC_SEGMENT& arc);
```

### Parameters

*arc*

The arc segment to add to the figure

## CD2DGeometrySink::AddBezier

Creates a cubic Bezier curve between the current point and the specified end point.

```
void AddBezier(const D2D1_BEZIER_SEGMENT& bezier);
```

### Parameters

*bezier*

A structure that describes the control points and end point of the Bezier curve to add.

## CD2DGeometrySink::AddBeziers

Creates a sequence of cubic Bezier curves and adds them to the geometry sink.

```
void AddBeziers(
const CArray<D2D1_BEZIER_SEGMENT,
D2D1_BEZIER_SEGMENT>& beziers);
```

### Parameters

*beziers*

An array of Bezier segments that describes the Bezier curves to create. A curve is drawn from the geometry sink's current point (the end point of the last segment drawn or the location specified by BeginFigure) to the end point of the first Bezier segment in the array. if the array contains additional Bezier segments, each subsequent Bezier segment uses the end point of the preceding Bezier segment as its start point.

## CD2DGeometrySink::AddLine

Creates a line segment between the current point and the specified end point and adds it to the geometry sink.

```
void AddLine(CD2DPointF point);
```

### Parameters

*point*

The end point of the line to draw.

## CD2DGeometrySink::AddLines

Creates a sequence of lines using the specified points and adds them to the geometry sink.

```
void AddLines(
const CArray<CD2DPointF,
CD2DPointF>& points);
```

### Parameters

*points*

An array of one or more points that describe the lines to draw. A line is drawn from the geometry sink's current point (the end point of the last segment drawn or the location specified by BeginFigure) to the first point in the array. if the array contains additional points, a line is drawn from the first point to the second point in the array, from the second point to the third point, and so on. An array of a sequence of the end points of the lines to draw.

## CD2DGeometrySink::AddQuadraticBezier

Creates a quadratic Bezier curve between the current point and the specified end point.

```
void AddQuadraticBezier(const D2D1_QUADRATIC_BEZIER_SEGMENT& bezier);
```

### Parameters

*bezier*

A structure that describes the control point and the end point of the quadratic Bezier curve to add.

## CD2DGeometrySink::AddQuadraticBeziers

Adds a sequence of quadratic Bezier segments as an array in a single call.

```
void AddQuadraticBeziers(
const CArray<D2D1_QUADRATIC_BEZIER_SEGMENT,
D2D1_QUADRATIC_BEZIER_SEGMENT>& beziers);
```

### Parameters

*beziers*

An array of a sequence of quadratic Bezier segments.

## CD2DGeometrySink::BeginFigure

Starts a new figure at the specified point.

```
void BeginFigure(
CD2DPointF startPoint,
D2D1_FIGURE_BEGIN figureBegin);
```

### Parameters

*startPoint*

The point at which to begin the new figure.

*figureBegin*

Whether the new figure should be hollow or filled.

## CD2DGeometrySink::CD2DGeometrySink

Constructs a CD2DGeometrySink object from CD2DPathGeometry object.

```
CD2DGeometrySink(CD2DPathGeometry& pathGeometry);
```

### Parameters

*pathGeometry*

An existing CD2DPathGeometry object.

## CD2DGeometrySink::Close

Closes the geometry sink

```
BOOL Close();
```

### Return Value

Nonzero if successful; otherwise FALSE.

## CD2DGeometrySink::EndFigure

Ends the current figure; optionally, closes it.

```
void EndFigure(D2D1_FIGURE_END figureEnd);
```

### Parameters

*figureEnd*

A value that indicates whether the current figure is closed. If the figure is closed, a line is drawn between the current point and the start point specified by BeginFigure.

## CD2DGeometrySink::Get

Returns ID2D1GeometrySink interface

```
ID2D1GeometrySink* Get();
```

### Return Value

Pointer to an ID2D1GeometrySink interface or NULL if object is not initialized yet.

## CD2DGeometrySink::IsValid

Checks geometry sink validity

```
BOOL IsValid() const;
```

### Return Value

TRUE if geometry sink is valid; otherwise FALSE.

## CD2DGeometrySink::m_pSink

A pointer to an ID2D1GeometrySink.

```
ID2D1GeometrySink* m_pSink;
```

## CD2DGeometrySink::operator ID2D1GeometrySink*

Returns ID2D1GeometrySink interface

```
operator ID2D1GeometrySink*();
```

### Return Value

Pointer to an ID2D1GeometrySink interface or NULL if object is not initialized yet.

## CD2DGeometrySink::SetFillMode

Specifies the method used to determine which points are inside the geometry described by this geometry sink and which points are outside.

```
void SetFillMode(D2D1_FILL_MODE fillMode);
```

### Parameters

*fillMode*

The method used to determine whether a given point is part of the geometry.

## CD2DGeometrySink::SetSegmentFlags

Specifies stroke and join options to be applied to new segments added to the geometry sink.

```
void SetSegmentFlags(D2D1_PATH_SEGMENT vertexFlags);
```

### Parameters

*vertexFlags*

Stroke and join options to be applied to new segments added to the geometry sink.