• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

How to read path data?

New Here ,
Apr 16, 2010 Apr 16, 2010

Copy link to clipboard

Copied

Hello, I'm new to photoshop plugin development, and wondering how to read the path data in plugin? That is, the data generated by the pen tool.

Thanks.

TOPICS
SDK

Views

2.5K

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Adobe
Adobe Employee ,
Apr 23, 2010 Apr 23, 2010

Copy link to clipboard

Copied

From PIProperties.h

/**  

* Contents of the indexed path in the format described

* in the path resources documentation; (Complex, read-only).

* The paths are indexed starting with zero. The data is stored in big

* endian form. Refer to chapter 10 for more information on path data.

*/

#define propPathContents      'path'

From the file formats document I get this. Hopefully that gets the answer for you!

Path resource format

Photoshop stores the paths saved with an image in an image resource block. These resource blocks consist of a series of 26-byte path point records, so the resource length should always be a multiple of 26.

Photoshop stores its paths as resources of type 8BIM , with IDs in the range 2000 through 2999. These numbers should be reserved for Photoshop. The name of the resource is the name given to the path when it was saved.

If the file contains a resource of type 8BIM with an ID of 2999, then this resource contains a Pascal-style string containing the name of the clipping path to use with this image when saving it as an EPS file.

The path format returned by GetProperty() call is identical to what is described below. Refer to the IllustratorExport sample plug-in code to see how this resource data is constructed.

Path points

All points used in defining a path are stored in eight bytes as a pair of 32-bit components, vertical component first.

The two components are signed, fixed point numbers with 8 bits before the binary point and 24 bits after the binary point. Three guard bits are reserved in the points to eliminate most concerns over arithmetic overflow. Hence, the range for each component is 0xF0000000 to 0x0FFFFFFF representing a range of -16 to 16. The lower bound is included, but not the upper bound.

This limited range is used because the points are expressed relative to the image size. The vertical component is given with respect to the image height, and the horizontal component is given with respect to the image width. [ 0,0 ] represents the top-left corner of the image; [ 1,1 ] ([ 0x01000000,0x01000000 ]) represents the bottom-right.

In Windows, the byte order of the path point components are reversed; you should swap the bytes when accessing each 32-bit value.

Path records

The data in a path resource consists of one or more 26-byte records. The first two bytes of each record is a selector to indicate what kind of path it is. For Windows, you should swap the bytes before accessing it as a short.

Path data record types

Selector

     

Description

0

     

Closed subpath length record

1

     

Closed subpath Bezier knot, linked

2

     

Closed subpath Bezier knot, unlinked

3

     

Open subpath length record

4

     

Open subpath Bezier knot, linked

5

     

Open subpath Bezier knot, unlinked

6

     

Path fill rule record

7

     

Clipboard record

8

     

Initial fill rule record

The first 26-byte path record contains a selector value of 6, path fill rule record. The remaining 24 bytes of the first record are zeroes. Paths use even/odd ruling. Subpath length records, selector value 0 or 3, contain the number of Bezier knot records in bytes 2 and 3. The remaining 22 bytes are unused, and should be zeroes. Each length record is then immediately followed by the Bezier knot records describing the knots of the subpath.

In Bezier knot records, the 24 bytes following the selector field contain three path points (described above) for:

the control point for the Bezier segment preceding the knot,

the anchor point for the knot, and

the control point for the Bezier segment leaving the knot.

Linked knots have their control points linked. Editing one point modifies the other to preserve collinearity. Knots should only be marked as having linked controls if their control points are collinear with their anchor. The control points on unlinked knots are independent of each other. Refer to the Adobe Photoshop User Guide for more information.

Clipboard records, selector=7 , contain four fixed-point numbers for the bounding rectangle (top, left, bottom, right), and a single fixed-point number indicating the resolution.

Initial fill records, selector=8 , contain one two byte record. A value of 1 means that the fill starts with all pixels. The value will be either 0 or 1.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Apr 30, 2010 Apr 30, 2010

Copy link to clipboard

Copied

Thank you, I will try that

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Aug 25, 2013 Aug 25, 2013

Copy link to clipboard

Copied

LATEST

Hi igamenovoer,

Did you have any success with this?

mlavie

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines