Skip to content

Commit 613c5e4

Browse files
committed
Fix clipping
1 parent dc3cded commit 613c5e4

File tree

1 file changed

+8
-17
lines changed

1 file changed

+8
-17
lines changed

src/main.cpp

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,11 @@ void OnPaint(HDC hdc, const std::string& filePath, Viewer& viewer) {
1919
}
2020
Vector2Df viewport = parser->getViewPort();
2121
std::pair< Vector2Df, Vector2Df > viewbox = parser->getViewBox();
22-
graphics.SetClip(Gdiplus::Rect(0, 0, viewport.x, viewport.y));
23-
Gdiplus::GraphicsState state = graphics.Save();
2422
if (viewport.x == 0 && viewport.y == 0) {
2523
viewport.x = viewer.window_size.x;
2624
viewport.y = viewer.window_size.y;
2725
}
26+
graphics.SetClip(Gdiplus::Rect(0, 0, viewport.x, viewport.y));
2827
if ((viewport.x != viewbox.second.x || viewport.y != viewbox.second.y) &&
2928
viewbox.second.x != 0 && viewbox.second.y != 0) {
3029
float scale_x = viewport.x / viewbox.second.x;
@@ -43,27 +42,19 @@ void OnPaint(HDC hdc, const std::string& filePath, Viewer& viewer) {
4342
graphics.TranslateTransform(offset_x, offset_y);
4443
}
4544

45+
graphics.SetSmoothingMode(Gdiplus::SmoothingModeAntiAlias8x8);
46+
graphics.SetTextContrast(100);
47+
graphics.SetCompositingMode(Gdiplus::CompositingModeSourceOver);
48+
graphics.SetPixelOffsetMode(Gdiplus::PixelOffsetModeHighQuality);
49+
graphics.SetInterpolationMode(Gdiplus::InterpolationModeHighQuality);
50+
4651
Gdiplus::Matrix matrix;
4752
Gdiplus::Region region;
4853
graphics.GetClip(&region);
4954
graphics.RotateTransform(viewer.rotate_angle);
50-
if (viewer.rotate_angle != 0) {
51-
matrix.Rotate(viewer.rotate_angle);
52-
region.Transform(&matrix);
53-
}
5455
graphics.ScaleTransform(viewer.zoom_factor, viewer.zoom_factor);
55-
if (viewer.zoom_factor != 1) {
56-
matrix.Scale(viewer.zoom_factor, viewer.zoom_factor);
57-
region.Transform(&matrix);
58-
}
59-
graphics.SetClip(&region);
6056
graphics.TranslateTransform(viewer.offset_x, viewer.offset_y);
61-
graphics.TranslateClip(viewer.offset_x, viewer.offset_y);
62-
graphics.SetSmoothingMode(Gdiplus::SmoothingModeAntiAlias8x8);
63-
graphics.SetTextContrast(100);
64-
graphics.SetCompositingMode(Gdiplus::CompositingModeSourceOver);
65-
graphics.SetPixelOffsetMode(Gdiplus::PixelOffsetModeHighQuality);
66-
graphics.SetInterpolationMode(Gdiplus::InterpolationModeHighQuality);
57+
graphics.SetClip(&region);
6758

6859
Renderer* renderer = Renderer::getInstance();
6960
SVGElement* root = parser->getRoot();

0 commit comments

Comments
 (0)