Class TFillShapeInfo

Unit

Declaration

type TFillShapeInfo = class(TBGRACustomFillInfo)

Description

Abstract class to provide fill information for any shape

Hierarchy

Overview

Fields

Protected FPointInsideInter: ArrayOfTIntersectionInfo;

Methods

Public destructor Destroy; override;
Public function CreateIntersectionArray: ArrayOfTIntersectionInfo; override;
Public function CreateIntersectionInfo: TIntersectionInfo; override;
Public function GetBounds: TRect; override;
Public function GetSliceIndex: integer; override;
Public function IsPointInside(x,y: single; windingMode: boolean): boolean; override;
Public function SegmentsCurved: boolean; override;
Protected function NbMaxIntersection: integer; virtual;
Public procedure ComputeAndSort(cury: single; var inter: ArrayOfTIntersectionInfo; out nbInter: integer; windingMode: boolean); override;
Public procedure FreeIntersectionArray(var inter: ArrayOfTIntersectionInfo); override;
Protected procedure ComputeIntersection(cury: single; var inter: ArrayOfTIntersectionInfo; var nbInter: integer); virtual;
Protected procedure ConvertFromNonZeroWinding(var inter: ArrayOfTIntersectionInfo; var nbInter: integer); virtual;
Protected procedure InternalQuickSortIntersection(inter0: pointer; idxL, idxH: Integer); virtual;
Protected procedure SortIntersection(var inter: ArrayOfTIntersectionInfo; nbInter: integer); virtual;

Description

Fields

Protected FPointInsideInter: ArrayOfTIntersectionInfo;

This item has no description.

Methods

Public destructor Destroy; override;

This item has no description.

Public function CreateIntersectionArray: ArrayOfTIntersectionInfo; override;

create an array that will contain computed intersections. you may augment, in this case, use CreateIntersectionInfo for new items

Public function CreateIntersectionInfo: TIntersectionInfo; override;

This item has no description. Showing description inherited from TBGRACustomFillInfo.CreateIntersectionInfo.

Create a structure to define one single intersection

Public function GetBounds: TRect; override;

returns integer bounds

Public function GetSliceIndex: integer; override;

can be called after ComputeAndSort or ComputeIntersection to determine the current horizontal slice so that it can be checked if the intermediates scanlines can be skipped

Public function IsPointInside(x,y: single; windingMode: boolean): boolean; override;

check if the point is inside the filling zone

Public function SegmentsCurved: boolean; override;

returns true if the same segment number can be curved

Protected function NbMaxIntersection: integer; virtual;

returns maximum of intersection per line

Public procedure ComputeAndSort(cury: single; var inter: ArrayOfTIntersectionInfo; out nbInter: integer; windingMode: boolean); override;

fill a previously created array of intersections with actual intersections at the current y coordinate. nbInter gets the number of computed intersections

Public procedure FreeIntersectionArray(var inter: ArrayOfTIntersectionInfo); override;

creates a single info

Protected procedure ComputeIntersection(cury: single; var inter: ArrayOfTIntersectionInfo; var nbInter: integer); virtual;

compute intersections. the array must be big enough

Protected procedure ConvertFromNonZeroWinding(var inter: ArrayOfTIntersectionInfo; var nbInter: integer); virtual;

apply non-zero winding rule. it can change the number of intersections

Protected procedure InternalQuickSortIntersection(inter0: pointer; idxL, idxH: Integer); virtual;

This item has no description.

Protected procedure SortIntersection(var inter: ArrayOfTIntersectionInfo; nbInter: integer); virtual;

sort from left to right