Skip to content
This repository was archived by the owner on Aug 31, 2021. It is now read-only.

Commit 6155e34

Browse files
committed
[[ libgraphics ]] Rename MCGAffineTransform modifying functions to make concatenation order explicit.
[[ libgraphics ]] Add post-concatentation versions of transform modifying functions.
1 parent 140e5da commit 6155e34

File tree

11 files changed

+54
-30
lines changed

11 files changed

+54
-30
lines changed

engine/src/customprinter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -848,7 +848,7 @@ void MCCustomMetaContext::dorawpathmark(MCMark *p_mark, uint1 *p_commands, uint3
848848
MCGRaster t_tile_raster;
849849
/* UNCHECKED */ MCGImageGetRaster(t_image, t_tile_raster);
850850

851-
t_transform = MCGAffineTransformTranslate(t_transform, p_mark->fill->origin.x, p_mark->fill->origin.y);
851+
t_transform = MCGAffineTransformPreTranslate(t_transform, p_mark->fill->origin.x, p_mark->fill->origin.y);
852852

853853
// Construct the paint pattern.
854854
t_paint . type = kMCCustomPrinterPaintPattern;

engine/src/graphicscontext.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -604,7 +604,7 @@ void MCGraphicsContext::setfillstyle(uint2 style, MCPatternRef p, int2 x, int2 y
604604
// IM-2014-05-13: [[ HiResPatterns ]] Update pattern access to use lock function
605605
if (MCPatternLockForContextTransform(p, MCGContextGetDeviceTransform(m_gcontext), t_image, t_transform))
606606
{
607-
t_transform = MCGAffineTransformTranslate(t_transform, x, y);
607+
t_transform = MCGAffineTransformPreTranslate(t_transform, x, y);
608608
// IM-2014-05-21: [[ HiResPatterns ]] Use the pattern filter value
609609
MCGImageFilter t_filter;
610610
/* UNCHECKED */ MCPatternGetFilter(p, t_filter);
@@ -1266,7 +1266,7 @@ void MCGraphicsContext::drawimage(const MCImageDescriptor& p_image, int2 sx, int
12661266
{
12671267
MCGAffineTransform t_transform = MCGAffineTransformMakeTranslation(-t_dest.origin.x, -t_dest.origin.y);
12681268
t_transform = MCGAffineTransformConcat(p_image.transform, t_transform);
1269-
t_transform = MCGAffineTransformTranslate(t_transform, t_dest.origin.x, t_dest.origin.y);
1269+
t_transform = MCGAffineTransformPreTranslate(t_transform, t_dest.origin.x, t_dest.origin.y);
12701270

12711271
MCGContextConcatCTM(m_gcontext, t_transform);
12721272
}

engine/src/idraw.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ void MCImage::drawme(MCDC *dc, int2 sx, int2 sy, uint2 sw, uint2 sh, int2 dx, in
136136
t_has_transform = true;
137137
t_transform = MCGAffineTransformMakeIdentity();
138138
}
139-
t_transform = MCGAffineTransformScale(t_transform, dw / (float)sw, dh / (float)sh);
139+
t_transform = MCGAffineTransformPreScale(t_transform, dw / (float)sw, dh / (float)sh);
140140
}
141141

142142
MCGFloat t_device_scale;

engine/src/iutil.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -523,17 +523,17 @@ void MCImage::rotate_transform(int32_t p_angle)
523523
MCCalculateRotatedGeometry(t_src_width, t_src_height, p_angle, t_trans_width, t_trans_height);
524524

525525
MCGAffineTransform t_transform = MCGAffineTransformMakeTranslation(-(int32_t)t_src_width / 2.0, -(int32_t)t_src_height / 2.0);
526-
t_transform = MCGAffineTransformRotate(t_transform, -p_angle);
526+
t_transform = MCGAffineTransformPreRotate(t_transform, -p_angle);
527527

528528
// MW-2013-10-25: [[ Bug 11300 ]] If needed, flip the transform appropriately.
529529
if (m_flip_x || m_flip_y)
530-
t_transform = MCGAffineTransformScale(t_transform, m_flip_x ? -1.0f : 1.0f, m_flip_y ? -1.0f : 1.0f);
530+
t_transform = MCGAffineTransformPreScale(t_transform, m_flip_x ? -1.0f : 1.0f, m_flip_y ? -1.0f : 1.0f);
531531

532-
t_transform = MCGAffineTransformTranslate(t_transform, t_trans_width / 2.0, t_trans_height / 2.0);
532+
t_transform = MCGAffineTransformPreTranslate(t_transform, t_trans_width / 2.0, t_trans_height / 2.0);
533533

534534
if (getflag(F_LOCK_LOCATION))
535535
{
536-
t_transform = MCGAffineTransformScale(t_transform, rect.width / (MCGFloat)t_trans_width, rect.height / (MCGFloat)t_trans_height);
536+
t_transform = MCGAffineTransformPreScale(t_transform, rect.width / (MCGFloat)t_trans_width, rect.height / (MCGFloat)t_trans_height);
537537
t_trans_width = rect.width;
538538
t_trans_height = rect.height;
539539
}
@@ -572,13 +572,13 @@ void MCImage::resize_transform()
572572
if (m_flip_x || m_flip_y)
573573
{
574574
t_transform = MCGAffineTransformMakeTranslation(-(signed)t_src_width / 2.0f, -(signed)t_src_height / 2.0f);
575-
t_transform = MCGAffineTransformScale(t_transform, m_flip_x ? -1.0f : 1.0f, m_flip_y ? -1.0f : 1.0f);
576-
t_transform = MCGAffineTransformTranslate(t_transform, t_src_width / 2.0, t_src_height / 2.0);
575+
t_transform = MCGAffineTransformPreScale(t_transform, m_flip_x ? -1.0f : 1.0f, m_flip_y ? -1.0f : 1.0f);
576+
t_transform = MCGAffineTransformPreTranslate(t_transform, t_src_width / 2.0, t_src_height / 2.0);
577577
}
578578
else
579579
t_transform = MCGAffineTransformMakeIdentity();
580580

581-
m_transform = MCGAffineTransformScale(t_transform, rect.width / (MCGFloat)t_src_width, rect.height / (MCGFloat)t_src_height);
581+
m_transform = MCGAffineTransformPreScale(t_transform, rect.width / (MCGFloat)t_src_width, rect.height / (MCGFloat)t_src_height);
582582
}
583583
}
584584

@@ -595,8 +595,8 @@ void MCImage::flip_transform()
595595
m_has_transform = true;
596596

597597
m_transform = MCGAffineTransformMakeTranslation(-(signed)t_src_width / 2.0, -(signed)t_src_height / 2.0);
598-
m_transform = MCGAffineTransformScale(m_transform, m_flip_x ? -1.0f : 1.0f, m_flip_y ? -1.0f : 1.0f);
599-
m_transform = MCGAffineTransformTranslate(m_transform, t_src_width / 2.0, t_src_height / 2.0);
598+
m_transform = MCGAffineTransformPreScale(m_transform, m_flip_x ? -1.0f : 1.0f, m_flip_y ? -1.0f : 1.0f);
599+
m_transform = MCGAffineTransformPreTranslate(m_transform, t_src_width / 2.0, t_src_height / 2.0);
600600
}
601601
}
602602

engine/src/lnxpsprinter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1497,7 +1497,7 @@ void MCPSMetaContext::fillpattern(MCPatternRef p_pattern, MCPoint p_origin)
14971497

14981498
// IM-2014-05-14: [[ HiResPatterns ]] Update pattern access to use lock function
14991499
/* UNCHECKED */ MCPatternLockForContextTransform(p_pattern, MCGAffineTransformMakeIdentity(), t_image, t_transform);
1500-
t_transform = MCGAffineTransformTranslate(t_transform, p_origin.x, cardheight - p_origin.y);
1500+
t_transform = MCGAffineTransformPreTranslate(t_transform, p_origin.x, cardheight - p_origin.y);
15011501

15021502
if (!pattern_created(t_image))
15031503
create_pattern(t_image);

engine/src/mblandroidcontrol.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,7 @@ MCGAffineTransform MCNativeControlUserToDeviceTransform()
460460
// IM-2014-02-25: [[ Bug 11816 ]] Use scaled stack->view transform as view backing scale may not have been set yet
461461
float t_scale;
462462
t_scale = MCResGetPixelScale();
463-
return MCGAffineTransformScale(MCdefaultstackptr -> getviewtransform(), t_scale, t_scale);
463+
return MCGAffineTransformPreScale(MCdefaultstackptr -> getviewtransform(), t_scale, t_scale);
464464
}
465465

466466
MCGAffineTransform MCNativeControlUserFromDeviceTransform()

engine/src/mbliphonecontrol.mm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -590,14 +590,14 @@ MCGAffineTransform MCNativeControlUserToDeviceTransform()
590590
{
591591
float t_scale;
592592
t_scale = 1 / MCIPhoneGetNativeControlScale();
593-
return MCGAffineTransformScale(MCdefaultstackptr -> getviewtransform(), t_scale, t_scale);
593+
return MCGAffineTransformPreScale(MCdefaultstackptr -> getviewtransform(), t_scale, t_scale);
594594
}
595595

596596
MCGAffineTransform MCNativeControlUserFromDeviceTransform()
597597
{
598598
float t_scale;
599599
t_scale = MCIPhoneGetNativeControlScale();
600-
return MCGAffineTransformScale(MCGAffineTransformInvert(MCdefaultstackptr -> getviewtransform()), t_scale, t_scale);
600+
return MCGAffineTransformPreScale(MCGAffineTransformInvert(MCdefaultstackptr -> getviewtransform()), t_scale, t_scale);
601601
}
602602

603603
////////////////////////////////////////////////////////////////////////////////

engine/src/object.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2949,7 +2949,7 @@ MCImageBitmap *MCObject::snapshot(const MCRectangle *p_clip, const MCPoint *p_si
29492949

29502950
MCGAffineTransform t_transform = MCGAffineTransformMakeTranslation(-r.x, -r.y);
29512951
if (p_size != nil)
2952-
t_transform = MCGAffineTransformScale(t_transform, p_size->x / (float)r.width, p_size->y / (float)r.height);
2952+
t_transform = MCGAffineTransformPreScale(t_transform, p_size->x / (float)r.width, p_size->y / (float)r.height);
29532953

29542954
MCGContextConcatCTM(t_gcontext, t_transform);
29552955

engine/src/stackview.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -294,16 +294,16 @@ MCGAffineTransform view_get_stack_transform(MCStackFullscreenMode p_mode, MCRect
294294
case kMCStackFullscreenShowAll:
295295
t_scale = MCMin((MCGFloat)p_screen_rect.width / (MCGFloat)p_stack_rect.width, (MCGFloat)p_screen_rect.height / (MCGFloat)p_stack_rect.height);
296296
t_transform = MCGAffineTransformMakeTranslation(-(MCGFloat)p_stack_rect.width / 2.0, -(MCGFloat)p_stack_rect.height / 2.0);
297-
t_transform = MCGAffineTransformScale(t_transform, t_scale, t_scale);
298-
t_transform = MCGAffineTransformTranslate(t_transform, (MCGFloat)p_screen_rect.width / 2.0, (MCGFloat)p_screen_rect.height / 2.0);
297+
t_transform = MCGAffineTransformPreScale(t_transform, t_scale, t_scale);
298+
t_transform = MCGAffineTransformPreTranslate(t_transform, (MCGFloat)p_screen_rect.width / 2.0, (MCGFloat)p_screen_rect.height / 2.0);
299299

300300
return t_transform;
301301

302302
case kMCStackFullscreenNoBorder:
303303
t_scale = MCMax((MCGFloat)p_screen_rect.width / (MCGFloat)p_stack_rect.width, (MCGFloat)p_screen_rect.height / (MCGFloat)p_stack_rect.height);
304304
t_transform = MCGAffineTransformMakeTranslation(-(MCGFloat)p_stack_rect.width / 2.0, -(MCGFloat)p_stack_rect.height / 2.0);
305-
t_transform = MCGAffineTransformScale(t_transform, t_scale, t_scale);
306-
t_transform = MCGAffineTransformTranslate(t_transform, (MCGFloat)p_screen_rect.width / 2.0, (MCGFloat)p_screen_rect.height / 2.0);
305+
t_transform = MCGAffineTransformPreScale(t_transform, t_scale, t_scale);
306+
t_transform = MCGAffineTransformPreTranslate(t_transform, (MCGFloat)p_screen_rect.width / 2.0, (MCGFloat)p_screen_rect.height / 2.0);
307307

308308
return t_transform;
309309

libgraphics/include/graphics.h

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -950,10 +950,14 @@ MCGAffineTransform MCGAffineTransformMakeScale(MCGFloat p_xscale, MCGFloat p_ysc
950950
MCGAffineTransform MCGAffineTransformMakeSkew(MCGFloat p_xskew, MCGFloat p_yskew);
951951

952952
MCGAffineTransform MCGAffineTransformConcat(const MCGAffineTransform& transform_1, const MCGAffineTransform& transform_2);
953-
MCGAffineTransform MCGAffineTransformRotate(const MCGAffineTransform& transform, MCGFloat angle);
954-
MCGAffineTransform MCGAffineTransformTranslate(const MCGAffineTransform& transform, MCGFloat xoffset, MCGFloat yoffset);
955-
MCGAffineTransform MCGAffineTransformScale(const MCGAffineTransform& transform, MCGFloat xscale, MCGFloat yscale);
956-
MCGAffineTransform MCGAffineTransformSkew(const MCGAffineTransform &p_transform, MCGFloat p_xskew, MCGFloat p_yskew);
953+
MCGAffineTransform MCGAffineTransformPreRotate(const MCGAffineTransform& transform, MCGFloat angle);
954+
MCGAffineTransform MCGAffineTransformPostRotate(const MCGAffineTransform& transform, MCGFloat angle);
955+
MCGAffineTransform MCGAffineTransformPreTranslate(const MCGAffineTransform& transform, MCGFloat xoffset, MCGFloat yoffset);
956+
MCGAffineTransform MCGAffineTransformPostTranslate(const MCGAffineTransform& transform, MCGFloat xoffset, MCGFloat yoffset);
957+
MCGAffineTransform MCGAffineTransformPreScale(const MCGAffineTransform& transform, MCGFloat xscale, MCGFloat yscale);
958+
MCGAffineTransform MCGAffineTransformPostScale(const MCGAffineTransform& transform, MCGFloat xscale, MCGFloat yscale);
959+
MCGAffineTransform MCGAffineTransformPreSkew(const MCGAffineTransform &p_transform, MCGFloat p_xskew, MCGFloat p_yskew);
960+
MCGAffineTransform MCGAffineTransformPostSkew(const MCGAffineTransform &p_transform, MCGFloat p_xskew, MCGFloat p_yskew);
957961
MCGAffineTransform MCGAffineTransformInvert(const MCGAffineTransform& transform);
958962

959963
// IM-2014-06-11: [[ Bug 12557 ]] Returns transform that would convert rectangle a to rectangle b by scaling + translating

0 commit comments

Comments
 (0)