SBSDKPolygon

@interface SBSDKPolygon : NSObject <NSCopying>

This class represents a 4-gon, a polygon with 4 edges. The polygons points are stored in a normalized unit coordinate system from {0, 0} to {1, 1}. To convert to absolute coordinates use the methods that take a size and return absolute values. An absolute space can be any 2-dimensional space with a size, e.g. an image.

  • When polygon was detected: contains the percentual width of the receiver in the image.

    Declaration

    Objective-C

    @property (assign, readwrite, nonatomic) double widthPercentage;

    Swift

    var widthPercentage: Double { get set }
  • When polygon was detected: contains the percentual height of the receiver in the image.

    Declaration

    Objective-C

    @property (assign, readwrite, nonatomic) double heightPercentage;

    Swift

    var heightPercentage: Double { get set }
  • When polygon was detected: contains the detection score of the receiver.

    Declaration

    Objective-C

    @property (assign, readwrite, nonatomic) double detectionScore;

    Swift

    var detectionScore: Double { get set }
  • When polygon was detected: contains the detection status of the receiver.

    Declaration

    Objective-C

    @property (assign, readwrite, nonatomic)
        SBSDKDocumentDetectionStatus detectionStatus;

    Swift

    var detectionStatus: SBSDKDocumentDetectionStatus { get set }
  • One of the desinated initializer methods.

    Declaration

    Objective-C

    - (instancetype)initWithNormalizedPointA:(CGPoint)a
                                      pointB:(CGPoint)b
                                      pointC:(CGPoint)c
                                      pointD:(CGPoint)d;

    Swift

    init!(normalizedPointA a: CGPoint, pointB b: CGPoint, pointC c: CGPoint, pointD d: CGPoint)

    Parameters

    a

    The first point of the polygon in unit coordinates.

    b

    The second point of the polygon in unit coordinates.

    c

    The third point of the polygon in unit coordinates.

    d

    The fourth point of the polygon in unit coordinates.

    Return Value

    A new instance of SBSDKPolygon class.

  • One of the desinated initializer methods.

    Declaration

    Objective-C

    - (instancetype)initWithNormalizedRect:(CGRect)rect;

    Swift

    init!(normalizedRect rect: CGRect)

    Parameters

    rect

    A rectangle in normalized unit space coordinates forming the new polygon.

    Return Value

    A new instance of SBSDKPolygon class.

  • One of the desinated initializer methods.

    Declaration

    Objective-C

    - (instancetype)initWithAbsolutePointA:(CGPoint)a
                                    pointB:(CGPoint)b
                                    pointC:(CGPoint)c
                                    pointD:(CGPoint)d
                                   forSize:(CGSize)size;

    Swift

    init!(absolutePointA a: CGPoint, pointB b: CGPoint, pointC c: CGPoint, pointD d: CGPoint, for size: CGSize)

    Parameters

    a

    The first point of the polygon in absolute coordinates.

    b

    The second point of the polygon in absolute coordinates.

    c

    The third point of the polygon in absolute coordinates.

    d

    The fourth point of the polygon in absolute coordinates.

    size

    The size to use to convert the points to unit coordinates.

    Return Value

    A new instance of SBSDKPolygon class.

  • One of the desinated initializer methods.

    Declaration

    Objective-C

    - (instancetype)initWithNormalizedDoubleValues:(NSArray<NSNumber *> *)values;

    Swift

    init!(normalizedDoubleValues values: [NSNumber]!)

    Parameters

    values

    An array of 8 NSNumber double values containing the normalized coordinates in the form [x1, y1, x2, y2, x3, y3, x4, y4].

  • Compares the receiver to another instance of SBSDKPolygon.

    Declaration

    Objective-C

    - (BOOL)isEqualToPolygon:(SBSDKPolygon *)polygon;

    Swift

    func isEqual(to polygon: SBSDKPolygon!) -> Bool

    Parameters

    polygon

    The polygon instance the receiver is compared to.

    Return Value

    YES, if the points of polygon are equal to the points of the receiver, NO otherwise.

  • Compares the receiver to another instance of SBSDKPolygon.

    Declaration

    Objective-C

    - (BOOL)isSimilarToPolygon:(SBSDKPolygon *)polygon;

    Swift

    func isSimilar(to polygon: SBSDKPolygon!) -> Bool

    Parameters

    polygon

    The polygon instance the receiver is compared to.

    Return Value

    YES, if the points of polygon are similar to the points of the receiver, NO otherwise. Similar here means the distance of the normalized corresponding points is less than 0.023.

  • Calculates the standard deviation in the corresponding points of the receiver and the given SBSDKPolygon.

    Declaration

    Objective-C

    - (double)standardDeviationToPolygon:(SBSDKPolygon *)polygon;

    Swift

    func standardDeviation(to polygon: SBSDKPolygon!) -> Double

    Parameters

    polygon

    The polygon instance the receiver is compared to.

    Return Value

    Standard deviation.

  • Clips the receiver the unit space {0, 0} - {1, 1}.

    Declaration

    Objective-C

    - (void)normalize;

    Swift

    func normalize()
  • Orders the receivers points in clockwise order. The first point is the point right next to 12 o'clock. This method uses the atan2 operator to sort the points clockwise.

    Declaration

    Objective-C

    - (void)sortClockwise;

    Swift

    func sortClockwise()
  • Helper method to transform a normalized point to an absolute coordinate system with given size.

    Declaration

    Objective-C

    + (CGPoint)normalizedPointFromAbsolutePoint:(CGPoint)point
                                       withSize:(CGSize)size;

    Swift

    class func normalizedPoint(fromAbsolutePoint point: CGPoint, with size: CGSize) -> CGPoint

    Parameters

    point

    The absolute point to convert into normalized space.

    size

    The size of the absolute coordinate system.

    Return Value

    The normalized point.

  • Helper method to transform an absolute point to the normalized unit coordinate system with given size.

    Declaration

    Objective-C

    + (CGPoint)absolutePointFromNormalizedPoint:(CGPoint)point
                                       withSize:(CGSize)size;

    Swift

    class func absolutePoint(fromNormalizedPoint point: CGPoint, with size: CGSize) -> CGPoint

    Parameters

    point

    The normalized point to convert into absolute space.

    size

    The size of the absolute coordinate system.

    Return Value

    The converted point.

  • Returns the normalized point at the given index.

    Declaration

    Objective-C

    - (CGPoint)normalizedPointWithIndex:(NSUInteger)index;

    Swift

    func normalizedPoint(with index: UInt) -> CGPoint

    Parameters

    index

    The index of the point in the receiver. Must be in range {0-3}.

    Return Value

    The normalized point.

  • Returns the absolute point at the given index.

    Declaration

    Objective-C

    - (CGPoint)absolutePointWithIndex:(NSUInteger)index forSize:(CGSize)size;

    Swift

    func absolutePoint(with index: UInt, for size: CGSize) -> CGPoint

    Parameters

    index

    The index of the point in the receiver. Must be in range {0-3}.

    size

    The size of the absolute coordinate system to transform the point to.

    Return Value

    The converted point.

  • Returns the normalized edge at the given index. The edge at index n is built from points at indices n and (n+1) % 4.

    Declaration

    Objective-C

    - (SBSDKPolygonEdge *)normalizedEdgeWithIndex:(NSUInteger)index;

    Swift

    func normalizedEdge(with index: UInt) -> SBSDKPolygonEdge!

    Parameters

    index

    The index of the edge in the receiver. Must be in range {0-3}.

    Return Value

    The normalized edge.

  • Returns the absolute edge at the given index. The edge at index n is built from points at indices n and (n+1) % 4.

    Declaration

    Objective-C

    - (SBSDKPolygonEdge *)absoluteEdgeWithIndex:(NSUInteger)index
                                        forSize:(CGSize)size;

    Swift

    func absoluteEdge(with index: UInt, for size: CGSize) -> SBSDKPolygonEdge!

    Parameters

    index

    The index of the edge in the receiver. Must be in range {0-3}.

    size

    The size of the absolute coordinate system to transform the edge to.

    Return Value

    The absolute edge.

  • Returns the normalized points as an array of 8 double value NSNumbers in the form [x1, y1, x2, y2, x3, y3, x4, y4].

    Declaration

    Objective-C

    - (NSArray<NSNumber *> *)normalizedDoubleValues;

    Swift

    func normalizedDoubleValues() -> [NSNumber]!
  • Sets the receivers point at the given index to the value of point.

    Declaration

    Objective-C

    - (void)setNormalizedPoint:(CGPoint)point forIndex:(NSUInteger)index;

    Swift

    func setNormalizedPoint(_ point: CGPoint, for index: UInt)

    Parameters

    point

    The normalized point.

    index

    The index of the point the set within the receiver in range {0-3}.

  • Sets the receivers point at the given index to the normalized value of point.

    Declaration

    Objective-C

    - (void)setAbsolutePoint:(CGPoint)point
                    withSize:(CGSize)size
                    forIndex:(NSUInteger)index;

    Swift

    func setAbsolutePoint(_ point: CGPoint, with size: CGSize, for index: UInt)

    Parameters

    point

    The absolute point.

    size

    The size of the absolute coordinate system.

    index

    The index of the point the set within the receiver in range {0-3}.

  • Rotates the points of the receiver 90 degrees clockwise, transforming it from one absolute space to another.

    Declaration

    Objective-C

    - (void)rotate90CWWithOldSize:(CGSize)oldSize newSize:(CGSize)newSize;

    Swift

    func rotate90CW(withOldSize oldSize: CGSize, newSize: CGSize)

    Parameters

    oldSize

    The size of the absolute coordinate system before rotating it.

    newSize

    The size of the absolute coordinate system after rotating it.

  • Rotates the points of the receiver 90 degrees counterclockwise, transforming it from one absolute space to another.

    Declaration

    Objective-C

    - (void)rotate90CCWWithOldSize:(CGSize)oldSize newSize:(CGSize)newSize;

    Swift

    func rotate90CCW(withOldSize oldSize: CGSize, newSize: CGSize)

    Parameters

    oldSize

    The size of the absolute coordinate system before rotating it.

    newSize

    The size of the absolute coordinate system after rotating it.

  • Rotates the points of the receiver 180 degrees, transforming it from one absolute space to another.

    Declaration

    Objective-C

    - (void)rotate180WithOldSize:(CGSize)oldSize newSize:(CGSize)newSize;

    Swift

    func rotate180(withOldSize oldSize: CGSize, newSize: CGSize)

    Parameters

    oldSize

    The size of the absolute coordinate system before rotating it.

    newSize

    The size of the absolute coordinate system after rotating it.

  • Performs times counter-clockwise rotations on the receiver.

    Declaration

    Objective-C

    - (void)rotateCCW:(NSUInteger)times withSize:(CGSize)size;

    Swift

    func rotateCCW(_ times: UInt, with size: CGSize)

    Parameters

    size

    The size of the absolute coordinate system before rotating it.

  • Performs times clockwise rotations on the receiver.

    Declaration

    Objective-C

    - (void)rotateCW:(NSUInteger)times withSize:(CGSize)size;

    Swift

    func rotateCW(_ times: UInt, with size: CGSize)

    Parameters

    size

    The size of the absolute coordinate system before rotating it.

  • Returns the axis-oriented bounding box of the receiver.

    Declaration

    Objective-C

    - (CGRect)boundingBoxWithSize:(CGSize)size;

    Swift

    func boundingBox(with size: CGSize) -> CGRect

    Parameters

    size

    The absolute size the polygon is scaled to.

    Return Value

    The bounding box of the polygon in sbolute image space coordinates.

  • Calculates the geometric center (mass point) of the polygon in normalized unit coordinates.

    Declaration

    Objective-C

    - (CGPoint)center;

    Swift

    func center() -> CGPoint
  • Calculates the estimated size of the perspective-corrected and cropped image when applying the receiver to an image with given size.

    Declaration

    Objective-C

    - (CGSize)sizeWhenApplyingToImageOfSize:(CGSize)size
                                 imageScale:(double)imageScale
                                focalLength:(double)focalLength
                                sensorWidth:(double)sensorWidth;

    Swift

    func sizeWhenApplying(toImageOf size: CGSize, imageScale: Double, focalLength: Double, sensorWidth: Double) -> CGSize

    Parameters

    size

    The size of the original image the receiver should be applied to.

    imageScale

    The scaling factor of the image.

    focalLength

    The focal length of the lens the image was taken with in millimeters.

    sensorWidth

    The width of the sensor the image was taken with in millimeters.

    Return Value

    The estimated size of the cropped and perspective-corrected image, when the receiver was applied.

  • One of the desinated initializer methods.

    Declaration

    Objective-C

    - (instancetype)initWithMetadataObject:
        (AVMetadataMachineReadableCodeObject *)codeObject;

    Swift

    init!(metadataObject codeObject: AVMetadataMachineReadableCodeObject!)

    Parameters

    codeObject

    An AVMetadataMachineReadableCodeObject as returned from QR code detection.

  • Creates a UIBezierPath instance of the receiver for drawing purposes.

    Declaration

    Objective-C

    - (UIBezierPath *)bezierPathForSize:(CGSize)size;

    Swift

    func bezierPath(for size: CGSize) -> UIBezierPath!

    Parameters

    size

    The size to use to convert the normalized points of the receiver to absolute coordinates.

    Return Value

    An UIBezierPath instance representing the polygon converted to absolute space.

  • Creates a UIBezierPath instance of the receiver for drawing purposes.

    Declaration

    Objective-C

    - (UIBezierPath *)bezierPathForPreviewLayer:
        (AVCaptureVideoPreviewLayer *)previewLayer;

    Swift

    func bezierPath(for previewLayer: AVCaptureVideoPreviewLayer!) -> UIBezierPath!

    Parameters

    previewLayer

    The preview layer the path is going to be presented on.

    Return Value

    An UIBezierPath instance representing the polygon.