|
|
|
@ -788,9 +788,9 @@ struct PaintGlyph |
|
|
|
|
c->funcs->push_clip_glyph (c->data, gid, c->font); |
|
|
|
|
c->funcs->push_root_transform (c->data, c->font); |
|
|
|
|
c->recurse (this+paint); |
|
|
|
|
c->funcs->pop_root_transform (c->data); |
|
|
|
|
c->funcs->pop_transform (c->data); |
|
|
|
|
c->funcs->pop_clip (c->data); |
|
|
|
|
c->funcs->pop_inverse_root_transform (c->data); |
|
|
|
|
c->funcs->pop_transform (c->data); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
HBUINT8 format; /* format = 10 */ |
|
|
|
@ -888,9 +888,9 @@ struct PaintTranslate |
|
|
|
|
float ddx = dx + c->instancer (varIdxBase, 0); |
|
|
|
|
float ddy = dy + c->instancer (varIdxBase, 1); |
|
|
|
|
|
|
|
|
|
c->funcs->push_translate (c->data, ddx, ddy); |
|
|
|
|
bool p1 = c->funcs->push_translate (c->data, ddx, ddy); |
|
|
|
|
c->recurse (this+src); |
|
|
|
|
c->funcs->pop_translate (c->data, ddx, ddy); |
|
|
|
|
if (p1) c->funcs->pop_transform (c->data); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
HBUINT8 format; /* format = 14(noVar) or 15 (Var) */ |
|
|
|
@ -925,9 +925,9 @@ struct PaintScale |
|
|
|
|
float sx = scaleX.to_float (c->instancer (varIdxBase, 0)); |
|
|
|
|
float sy = scaleY.to_float (c->instancer (varIdxBase, 1)); |
|
|
|
|
|
|
|
|
|
c->funcs->push_scale (c->data, sx, sy); |
|
|
|
|
bool p1 = c->funcs->push_scale (c->data, sx, sy); |
|
|
|
|
c->recurse (this+src); |
|
|
|
|
c->funcs->pop_scale (c->data, sx, sy); |
|
|
|
|
if (p1) c->funcs->pop_transform (c->data); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
HBUINT8 format; /* format = 16 (noVar) or 17(Var) */ |
|
|
|
@ -964,13 +964,13 @@ struct PaintScaleAroundCenter |
|
|
|
|
float tCenterX = centerX + c->instancer (varIdxBase, 2); |
|
|
|
|
float tCenterY = centerY + c->instancer (varIdxBase, 3); |
|
|
|
|
|
|
|
|
|
c->funcs->push_translate (c->data, +tCenterX, +tCenterY); |
|
|
|
|
c->funcs->push_scale (c->data, sx, sy); |
|
|
|
|
c->funcs->push_translate (c->data, -tCenterX, -tCenterY); |
|
|
|
|
bool p1 = c->funcs->push_translate (c->data, +tCenterX, +tCenterY); |
|
|
|
|
bool p2 = c->funcs->push_scale (c->data, sx, sy); |
|
|
|
|
bool p3 = c->funcs->push_translate (c->data, -tCenterX, -tCenterY); |
|
|
|
|
c->recurse (this+src); |
|
|
|
|
c->funcs->pop_translate (c->data, -tCenterX, -tCenterY); |
|
|
|
|
c->funcs->pop_scale (c->data, sx, sy); |
|
|
|
|
c->funcs->pop_translate (c->data, +tCenterX, +tCenterY); |
|
|
|
|
if (p3) c->funcs->pop_transform (c->data); |
|
|
|
|
if (p2) c->funcs->pop_transform (c->data); |
|
|
|
|
if (p1) c->funcs->pop_transform (c->data); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
HBUINT8 format; /* format = 18 (noVar) or 19(Var) */ |
|
|
|
@ -1006,9 +1006,9 @@ struct PaintScaleUniform |
|
|
|
|
{ |
|
|
|
|
float s = scale + c->instancer (varIdxBase, 0); |
|
|
|
|
|
|
|
|
|
c->funcs->push_scale (c->data, s, s); |
|
|
|
|
bool p1 = c->funcs->push_scale (c->data, s, s); |
|
|
|
|
c->recurse (this+src); |
|
|
|
|
c->funcs->pop_scale (c->data, s, s); |
|
|
|
|
if (p1) c->funcs->pop_transform (c->data); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
HBUINT8 format; /* format = 20 (noVar) or 21(Var) */ |
|
|
|
@ -1043,13 +1043,13 @@ struct PaintScaleUniformAroundCenter |
|
|
|
|
float tCenterX = centerX + c->instancer (varIdxBase, 1); |
|
|
|
|
float tCenterY = centerY + c->instancer (varIdxBase, 2); |
|
|
|
|
|
|
|
|
|
c->funcs->push_translate (c->data, +tCenterX, +tCenterY); |
|
|
|
|
c->funcs->push_scale (c->data, s, s); |
|
|
|
|
c->funcs->push_translate (c->data, -tCenterX, -tCenterY); |
|
|
|
|
bool p1 = c->funcs->push_translate (c->data, +tCenterX, +tCenterY); |
|
|
|
|
bool p2 = c->funcs->push_scale (c->data, s, s); |
|
|
|
|
bool p3 = c->funcs->push_translate (c->data, -tCenterX, -tCenterY); |
|
|
|
|
c->recurse (this+src); |
|
|
|
|
c->funcs->pop_translate (c->data, -tCenterX, -tCenterY); |
|
|
|
|
c->funcs->pop_scale (c->data, s, s); |
|
|
|
|
c->funcs->pop_translate (c->data, +tCenterX, +tCenterY); |
|
|
|
|
if (p3) c->funcs->pop_transform (c->data); |
|
|
|
|
if (p2) c->funcs->pop_transform (c->data); |
|
|
|
|
if (p1) c->funcs->pop_transform (c->data); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
HBUINT8 format; /* format = 22 (noVar) or 23(Var) */ |
|
|
|
@ -1084,9 +1084,9 @@ struct PaintRotate |
|
|
|
|
{ |
|
|
|
|
float a = angle.to_float (c->instancer (varIdxBase, 0)); |
|
|
|
|
|
|
|
|
|
c->funcs->push_rotate (c->data, a); |
|
|
|
|
bool p1 = c->funcs->push_rotate (c->data, a); |
|
|
|
|
c->recurse (this+src); |
|
|
|
|
c->funcs->pop_rotate (c->data, a); |
|
|
|
|
if (p1) c->funcs->pop_transform (c->data); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
HBUINT8 format; /* format = 24 (noVar) or 25(Var) */ |
|
|
|
@ -1121,13 +1121,13 @@ struct PaintRotateAroundCenter |
|
|
|
|
float tCenterX = centerX + c->instancer (varIdxBase, 1); |
|
|
|
|
float tCenterY = centerY + c->instancer (varIdxBase, 2); |
|
|
|
|
|
|
|
|
|
c->funcs->push_translate (c->data, +tCenterX, +tCenterY); |
|
|
|
|
c->funcs->push_rotate (c->data, a); |
|
|
|
|
c->funcs->push_translate (c->data, -tCenterX, -tCenterY); |
|
|
|
|
bool p1 = c->funcs->push_translate (c->data, +tCenterX, +tCenterY); |
|
|
|
|
bool p2 = c->funcs->push_rotate (c->data, a); |
|
|
|
|
bool p3 = c->funcs->push_translate (c->data, -tCenterX, -tCenterY); |
|
|
|
|
c->recurse (this+src); |
|
|
|
|
c->funcs->pop_translate (c->data, -tCenterX, -tCenterY); |
|
|
|
|
c->funcs->pop_rotate (c->data, a); |
|
|
|
|
c->funcs->pop_translate (c->data, +tCenterX, +tCenterY); |
|
|
|
|
if (p3) c->funcs->pop_transform (c->data); |
|
|
|
|
if (p2) c->funcs->pop_transform (c->data); |
|
|
|
|
if (p1) c->funcs->pop_transform (c->data); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
HBUINT8 format; /* format = 26 (noVar) or 27(Var) */ |
|
|
|
@ -1163,9 +1163,9 @@ struct PaintSkew |
|
|
|
|
float sx = xSkewAngle.to_float(c->instancer (varIdxBase, 0)); |
|
|
|
|
float sy = ySkewAngle.to_float(c->instancer (varIdxBase, 1)); |
|
|
|
|
|
|
|
|
|
c->funcs->push_skew (c->data, sx, sy); |
|
|
|
|
bool p1 = c->funcs->push_skew (c->data, sx, sy); |
|
|
|
|
c->recurse (this+src); |
|
|
|
|
c->funcs->pop_skew (c->data, sx, sy); |
|
|
|
|
if (p1) c->funcs->pop_transform (c->data); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
HBUINT8 format; /* format = 28(noVar) or 29 (Var) */ |
|
|
|
@ -1202,13 +1202,13 @@ struct PaintSkewAroundCenter |
|
|
|
|
float tCenterX = centerX + c->instancer (varIdxBase, 2); |
|
|
|
|
float tCenterY = centerY + c->instancer (varIdxBase, 3); |
|
|
|
|
|
|
|
|
|
c->funcs->push_translate (c->data, +tCenterX, +tCenterY); |
|
|
|
|
c->funcs->push_skew (c->data, sx, sy); |
|
|
|
|
c->funcs->push_translate (c->data, -tCenterX, -tCenterY); |
|
|
|
|
bool p1 = c->funcs->push_translate (c->data, +tCenterX, +tCenterY); |
|
|
|
|
bool p2 = c->funcs->push_skew (c->data, sx, sy); |
|
|
|
|
bool p3 = c->funcs->push_translate (c->data, -tCenterX, -tCenterY); |
|
|
|
|
c->recurse (this+src); |
|
|
|
|
c->funcs->pop_translate (c->data, -tCenterX, -tCenterY); |
|
|
|
|
c->funcs->pop_skew (c->data, sx, sy); |
|
|
|
|
c->funcs->pop_translate (c->data, +tCenterX, +tCenterY); |
|
|
|
|
if (p3) c->funcs->pop_transform (c->data); |
|
|
|
|
if (p2) c->funcs->pop_transform (c->data); |
|
|
|
|
if (p1) c->funcs->pop_transform (c->data); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
HBUINT8 format; /* format = 30(noVar) or 31 (Var) */ |
|
|
|
@ -2093,7 +2093,7 @@ struct COLR |
|
|
|
|
if (clip && pop_clip_first) |
|
|
|
|
c.funcs->pop_clip (c.data); |
|
|
|
|
|
|
|
|
|
c.funcs->pop_root_transform (c.data); |
|
|
|
|
c.funcs->pop_transform (c.data); |
|
|
|
|
|
|
|
|
|
if (clip && !pop_clip_first) |
|
|
|
|
c.funcs->pop_clip (c.data); |
|
|
|
|