From 1982ded78663a7639bf541d08a699eeb7302b160 Mon Sep 17 00:00:00 2001 From: Ivan Mahonin Date: May 01 2023 07:52:44 +0000 Subject: #assistants: tglGetBounds() --- diff --git a/toonz/sources/common/tgl/tgl.cpp b/toonz/sources/common/tgl/tgl.cpp index 88c6989..6c3c831 100644 --- a/toonz/sources/common/tgl/tgl.cpp +++ b/toonz/sources/common/tgl/tgl.cpp @@ -73,6 +73,16 @@ double tglGetPixelSize2() { //----------------------------------------------------------------------------- +TRectD tglGetBounds() { + TAffine4 modelview; + TAffine4 projection; + glGetDoublev(GL_MODELVIEW_MATRIX, modelview.a); + glGetDoublev(GL_PROJECTION_MATRIX, projection.a); + return (projection*modelview).get2d().inv() * TRectD(-1.0, -1.0, 1.0, 1.0); +} + +//----------------------------------------------------------------------------- + double tglGetTextWidth(const std::string &s, void *font) { double factor = 0.07; double w = 0; diff --git a/toonz/sources/include/tgl.h b/toonz/sources/include/tgl.h index b614cf2..134da8a 100644 --- a/toonz/sources/include/tgl.h +++ b/toonz/sources/include/tgl.h @@ -112,6 +112,9 @@ inline void tglColor(const TPixelD &p) { glColor4d(p.r, p.g, p.b, p.m); } //! retrieve the square of pixel size from current GL_MODELVIEW matrix DVAPI double tglGetPixelSize2(); +//! retrieve the current viewport bounds in world coordinates +DVAPI TRectD tglGetBounds(); + //! Draw text in string s at position p. DVAPI void tglDrawText(const TPointD &p, const std::string &s,