---
title: "Read Clipping Path Flatness"
canonical: https://www.graphicsmill.com/samples/Metadata/ClippingPath/ReadClippingPathFlatness_cs
product: "Graphics Mill"
source: "Metadata/ClippingPath/ReadClippingPathFlatness.cs"
---

# Read Clipping Path Flatness

Read a TIFF image that contains an Adobe resource block for clipping paths, retrieve and display the clipping path name and flatness.

## Instruction

Read a TIFF image that contains an Adobe resource block for clipping paths, retrieve and display the clipping path name and flatness value.

## Usings

```csharp
using System;
using System.Linq;
using Aurigma.GraphicsMill.Codecs;
```

## Code Snippet

```csharp
using (var reader = new TiffReader("TIFFWithClippingPath.tif"))
{
    const int clippingPathKey = 0x0bb7;

    if (reader.AdobeResources.Contains(clippingPathKey))
    {
        var arb = (AdobeResourceBlock)reader.AdobeResources[clippingPathKey];

        byte nameSize = arb.Data[0];

        Console.WriteLine($"Clipping path name: {System.Text.Encoding.UTF8.GetString(arb.Data.Skip(1).Take(nameSize).ToArray())}");

        // Flatness is a fixed point value in format 8p16: one byte for integer and 2 bytes for fractional.
        float flatness = (float)arb.Data[nameSize + 2] + ((float)(arb.Data[nameSize + 3] << 8 | arb.Data[nameSize + 4]) / ushort.MaxValue);

        Console.WriteLine($"Flatness: {flatness}");
    }
}
```

## Explanation

The code:

- Reads the "TIFFWithClippingPath.tif" image.
- Extracts the clipping path from the Adobe resources using the specified key (0x0bb7).
- Displays the clipping path name and the flatness value, which is a fixed point number extracted from the Adobe resource block.

## Tags

- [Clipping Paths](<https://www.graphicsmill.com/samples/tags/clipping-paths_md>): Reading and writing Adobe resources clipping path
- [Metadata](<https://www.graphicsmill.com/samples/tags/metadata_md>): Reading and writing image metadata
- [Read](<https://www.graphicsmill.com/samples/tags/read_md>): Reading images with codecs

## Input

- [TIFFWithClippingPath.tif](<https://www.graphicsmill.com/samples/Metadata/compiled/Debug/TIFFWithClippingPath_tif>) (download)

## Output

- [ReadClippingPathFlatness.txt](<https://www.graphicsmill.com/samples/Metadata/compiled/Debug/ReadClippingPathFlatness_txt>) (preview)

## Used APIs

- [Aurigma.GraphicsMill.Codecs.AdobeResourceBlock](<https://www.graphicsmill.com/docs/gm/T_Aurigma_GraphicsMill_Codecs_AdobeResourceBlock.htm.md>)
- [Aurigma.GraphicsMill.Codecs.AdobeResourceBlock.Data](<https://www.graphicsmill.com/docs/gm/P_Aurigma_GraphicsMill_Codecs_AdobeResourceBlock_Data.htm.md>)
- [Aurigma.GraphicsMill.Codecs.ImageReader.AdobeResources](<https://www.graphicsmill.com/docs/gm/P_Aurigma_GraphicsMill_Codecs_ImageReader_AdobeResources.htm.md>)
- [Aurigma.GraphicsMill.Codecs.MetadataDictionary.Contains(Object)](<https://www.graphicsmill.com/docs/gm/M_Aurigma_GraphicsMill_Codecs_MetadataDictionary_Contains_1_d02429b3.htm.md>)
- [Aurigma.GraphicsMill.Codecs.TiffReader](<https://www.graphicsmill.com/docs/gm/T_Aurigma_GraphicsMill_Codecs_TiffReader.htm.md>)
