4.4 Transformations
ApplyMAKET:
PUBLIC
PROC[self: State] = {
f: REAL = PopReal[self]; e: REAL = PopReal[self];
d: REAL = PopReal[self]; c: REAL = PopReal[self];
b: REAL = PopReal[self]; a: REAL = PopReal[self];
m: Transformation = IPTransform.MakeT[a, b, c, d, e, f];
PushTransformation[self, m];
};
ApplyOPENT:
PUBLIC
PROC[self: State] = {
m: Transformation = PopTransformation[self];
PushReal[self, m.a]; PushReal[self, m.b]; PushReal[self, m.c];
PushReal[self, m.d]; PushReal[self, m.e]; PushReal[self, m.f];
};
ApplyTRANSLATE:
PUBLIC
PROC[self: State] = {
y: REAL = PopReal[self]; x: REAL = PopReal[self];
m: Transformation = IPTransform.Translate[x, y];
PushTransformation[self, m];
};
ApplyROTATE:
PUBLIC
PROC[self: State] = {
a: REAL = PopReal[self];
m: Transformation = IPTransform.Rotate[a];
PushTransformation[self, m];
};
ApplySCALE:
PUBLIC
PROC[self: State] = {
s: REAL = PopReal[self];
m: Transformation = IPTransform.Scale[s];
PushTransformation[self, m];
};
ApplySCALE2:
PUBLIC
PROC[self: State] = {
sy: REAL = PopReal[self]; sx: REAL = PopReal[self];
m: Transformation = IPTransform.Scale2[sx, sy];
PushTransformation[self, m];
};
ApplyCONCAT:
PUBLIC
PROC[self: State] = {
n: Transformation = PopTransformation[self];
m: Transformation = PopTransformation[self];
p: Transformation = IPTransform.Concat[m, n];
PushTransformation[self, p];
};
ApplyINVERT:
PUBLIC
PROC[self: State] = {
m: Transformation = PopTransformation[self];
n: Transformation = IPTransform.Invert[m];
PushTransformation[self, n];
};
ApplyTRANSFORM:
PUBLIC
PROC[self: State] = {
m: Transformation = PopTransformation[self];
p: Pair = PopPair[self];
q: Pair = IPTransform.Transform[m, p];
PushPair[self, q];
};
ApplyTRANSFORMVEC:
PUBLIC
PROC[self: State] = {
m: Transformation = PopTransformation[self];
v: Pair = PopPair[self];
w: Pair = IPTransform.TransformVec[m, v];
PushPair[self, w];
};
ApplyROUNDXY:
PUBLIC
PROC[self: State] = {
m: Transformation = PopTransformation[self];
p: Pair = PopPair[self];
q: Pair = IPTransform.RoundXY[m, p];
PushPair[self, q];
};
ApplyROUNDXYVEC:
PUBLIC
PROC[self: State] = {
m: Transformation = PopTransformation[self];
v: Pair = PopPair[self];
w: Pair = IPTransform.RoundXYVec[m, v];
PushPair[self, w];
};
ApplyCONCATT:
PUBLIC
PROC[self: State] = {
m: Transformation = PopTransformation[self];
ConcatT[self, m];
};
ApplyMOVE:
PUBLIC
PROC[self: State] = {
Move[self];
};
ApplyTRANS:
PUBLIC
PROC[self: State] = {
Trans[self];
};
ApplySHOW:
PUBLIC
PROC[self: State] = {
v: Vector = PopVector[self];
Show[self, v];
};
ApplySHOWANDXREL:
PUBLIC
PROC[self: State] = {
v: Vector = PopVector[self];
ShowAndXRel[self, v];
};
4.6 Pixel arrays
ApplyMAKEPIXELARRAY:
PUBLIC
PROC[self: State] = {
samples: Vector = PopVector[self];
m: Transformation = PopTransformation[self];
samplesInterleaved: BOOL = PopBool[self];
maxSampleValue: Integer = PopInteger[self];
samplesPerPixel: Integer = PopInteger[self];
yPixels: Integer = PopInteger[self];
xPixels: Integer = PopInteger[self];
pa: PixelArray = MakePixelArray[xPixels: xPixels, yPixels: yPixels,
samplesPerPixel: samplesPerPixel, maxSampleValue: maxSampleValue,
samplesInterleaved: samplesInterleaved, m: m, samples: samples];
PushPixelArray[self, pa];
};
ApplyFINDDECOMPRESSOR:
PUBLIC
PROC[self: State] = {
v: Vector = PopVector[self];
op: Operator = FindDecompressor[self, v];
PushOperator[self, op];
};
4.7 Color
ApplyFINDCOLOR:
PUBLIC
PROC[self: State] = {
v: Vector = PopVector[self];
col: Color = FindColor[self, v];
PushColor[self, col];
};
ApplyFINDCOLOROPERATOR:
PUBLIC
PROC[self: State] = {
v: Vector = PopVector[self];
op: Operator = FindColorOperator[self, v];
PushOperator[self, op];
};
ApplyFINDCOLORMODELOPERATOR:
PUBLIC
PROC[self: State] = {
v: Vector = PopVector[self];
op: Operator = FindColorModelOperator[self, v];
PushOperator[self, op];
};
ApplyMAKEGRAY:
PUBLIC
PROC[self: State] = {
f: REAL = PopReal[self];
col: Color = MakeGray[f];
PushColor[self, col];
};
ApplySETGRAY:
PUBLIC
PROC[self: State] = {
f: REAL = PopReal[self];
SetGray[self, f];
};
ApplyMAKESAMPLEDBLACK:
PUBLIC
PROC[self: State] = {
transparent: BOOL = PopBool[self];
um: Transformation = PopTransformation[self];
pa: PixelArray = PopPixelArray[self];
col: Color = MakeSampledBlack[pa, um, transparent];
PushColor[self, col];
};
ApplyMAKESAMPLEDCOLOR:
PUBLIC
PROC[self: State] = {
colorOperator: Operator = PopOperator[self];
um: Transformation = PopTransformation[self];
pa: PixelArray = PopPixelArray[self];
col: Color = MakeSampledColor[pa, um, colorOperator];
PushColor[self, col];
};
4.8 Mask operators
ApplyMOVETO:
PUBLIC
PROC[self: State] = {
p: Pair = PopPair[self];
t: Trajectory = IPGeometry.MoveTo[p];
PushTrajectory[self, t];
};
ApplyLINETO:
PUBLIC
PROC[self: State] = {
p: Pair = PopPair[self];
t1: Trajectory = PopTrajectory[self];
t2: Trajectory = IPGeometry.LineTo[t1, p];
PushTrajectory[self, t2];
};
ApplyLINETOX:
PUBLIC
PROC[self: State] = {
x: REAL = PopReal[self];
t1: Trajectory = PopTrajectory[self];
t2: Trajectory = IPGeometry.LineToX[t1, x];
PushTrajectory[self, t2];
};
ApplyLINETOY:
PUBLIC
PROC[self: State] = {
y: REAL = PopReal[self];
t1: Trajectory = PopTrajectory[self];
t2: Trajectory = IPGeometry.LineToY[t1, y];
PushTrajectory[self, t2];
};
ApplyCURVETO:
PUBLIC
PROC[self: State] = {
p3: Pair = PopPair[self];
p2: Pair = PopPair[self];
p1: Pair = PopPair[self];
t1: Trajectory = PopTrajectory[self];
t2: Trajectory = IPGeometry.CurveTo[t1, p1, p2, p3];
PushTrajectory[self, t2];
};
ApplyARCTO:
PUBLIC
PROC[self: State] = {
ERROR IPErrors.MasterError[Unimplemented];
};
ApplyCONICTO:
PUBLIC
PROC[self: State] = {
ERROR IPErrors.MasterError[Unimplemented];
};
ApplyMAKEOUTLINE:
PUBLIC
PROC[self: State] = {
n: Integer = PopInteger[self];
p: PROC RETURNS[Trajectory] = { RETURN[PopTrajectory[self]] };
o: Outline = IPGeometry.MakeOutline[n, p];
PushOutline[self, o];
};
ApplyMASKFILL:
PUBLIC
PROC[self: State] = {
o: Outline = PopOutline[self];
MaskFill[self, o];
};
ApplyMASKSTROKE:
PUBLIC
PROC[self: State] = {
t: Trajectory = PopTrajectory[self];
MaskStroke[self, t, FALSE];
};
ApplyMASKSTROKECLOSED:
PUBLIC
PROC[self: State] = {
t: Trajectory = PopTrajectory[self];
MaskStroke[self, t, TRUE];
};
ApplyMASKRECTANGLE:
PUBLIC
PROC[self: State] = {
h: REAL = PopReal[self]; w: REAL = PopReal[self];
y: REAL = PopReal[self]; x: REAL = PopReal[self];
MaskRectangle[self, x, y, w, h];
};
ApplyMASKVECTOR:
PUBLIC
PROC[self: State] = {
p2: Pair = PopPair[self];
p1: Pair = PopPair[self];
MaskVector[self, p1, p2];
};
ApplySTARTUNDERLINE:
PUBLIC
PROC[self: State] = {
StartUnderline[self];
};
ApplyMASKUNDERLINE:
PUBLIC
PROC[self: State] = {
h: REAL = PopReal[self]; dy: REAL = PopReal[self];
MaskUnderline[self, dy, h];
};
ApplyMASKTRAPEZOIDX:
PUBLIC
PROC[self: State] = {
x4: REAL = PopReal[self];
y3: REAL = PopReal[self];
x3: REAL = PopReal[self];
x2: REAL = PopReal[self];
y1: REAL = PopReal[self];
x1: REAL = PopReal[self];
MaskTrapezoidX[self, x1, y1, x2, x3, y3, x4];
};
ApplyMASKTRAPEZOIDY:
PUBLIC
PROC[self: State] = {
y4: REAL = PopReal[self];
y3: REAL = PopReal[self];
x3: REAL = PopReal[self];
y2: REAL = PopReal[self];
y1: REAL = PopReal[self];
x1: REAL = PopReal[self];
MaskTrapezoidY[self, x1, y1, y2, x3, y3, y4];
};
ApplyMASKPIXEL:
PUBLIC
PROC[self: State] = {
pa: PixelArray = PopPixelArray[self];
MaskPixel[self, pa];
};
ApplyCLIPOUTLINE:
PUBLIC
PROC[self: State] = {
ERROR IPErrors.MasterError[Unimplemented];
};
ApplyCLIPRECTANGLE:
PUBLIC
PROC[self: State] = {
ERROR IPErrors.MasterError[Unimplemented];
};