MCPcopy Create free account
hub / github.com/TypesettingTools/Aegisub / DrawOverscanMask

Method DrawOverscanMask

src/video_display.cpp:228–264  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

226}
227
228void VideoDisplay::DrawOverscanMask(float horizontal_percent, float vertical_percent) const {
229 Vector2D v = Vector2D(viewport_width, viewport_height) / scale_factor;
230 Vector2D size = Vector2D(horizontal_percent, vertical_percent) * v;
231
232 // Clockwise from top-left
233 Vector2D corners[] = {
234 size,
235 Vector2D(viewport_width / scale_factor - size.X(), size),
236 v - size,
237 Vector2D(size, viewport_height / scale_factor - size.Y())
238 };
239
240 // Shift to compensate for black bars
241 Vector2D pos = Vector2D(viewport_left, viewport_top) / scale_factor;
242 for (auto& corner : corners)
243 corner = corner + pos;
244
245 int count = 0;
246 std::vector<float> points;
247 for (size_t i = 0; i < 4; ++i) {
248 size_t prev = (i + 3) % 4;
249 size_t next = (i + 1) % 4;
250 count += SplineCurve(
251 (corners[prev] + corners[i] * 4) / 5,
252 corners[i], corners[i],
253 (corners[next] + corners[i] * 4) / 5)
254 .GetPoints(points);
255 }
256
257 OpenGLWrapper gl;
258 gl.SetFillColour(wxColor(30, 70, 200), .5f);
259 gl.SetLineColour(*wxBLACK, 0, 1);
260
261 std::vector<int> vstart(1, 0);
262 std::vector<int> vcount(1, count);
263 gl.DrawMultiPolygon(points, vstart, vcount, pos, v, true);
264}
265
266void VideoDisplay::PositionVideo() {
267 auto provider = con->project->VideoProvider();

Callers

nothing calls this directly

Calls 8

Vector2DClass · 0.85
SplineCurveClass · 0.85
XMethod · 0.80
YMethod · 0.80
GetPointsMethod · 0.80
SetFillColourMethod · 0.80
SetLineColourMethod · 0.80
DrawMultiPolygonMethod · 0.80

Tested by

no test coverage detected