X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fclient%2Fmiscfunctions.qc;h=c573fe30518ee2c02591327918d0a1e43cf58375;hp=4d3c74cd52b02791bf5727f9578517eff40942ee;hb=ae8e40fb6c548a66ba478207601c92047a42eb1b;hpb=ede52023a69ffd4c9e873ca308c720f3692abb2a diff --git a/qcsrc/client/miscfunctions.qc b/qcsrc/client/miscfunctions.qc index 4d3c74cd52..c573fe3051 100644 --- a/qcsrc/client/miscfunctions.qc +++ b/qcsrc/client/miscfunctions.qc @@ -581,6 +581,28 @@ void drawstring_expanding(vector position, string text, vector scale, vector rgb drawfontscale = '1 1 0'; } +// drawstring wrapper to draw a string as large as possible with preserved aspect ratio into a box +void drawstring_aspect_expanding(vector pos, string text, vector sz, vector color, float alpha, float drawflag, float fadelerp) { + vector textsize; + textsize = eX * stringwidth(text, FALSE, '1 1 1' * sz_y) + eY * sz_y; + + float textaspect; + textaspect = textsize_x/textsize_y; + + vector oldsz; + oldsz = sz; + float aspect; + aspect = sz_x/sz_y; + + if(aspect > textaspect) { + sz_x = sz_y * textaspect; + drawstring_expanding(pos + eX * (oldsz_x - sz_x) * 0.5, text, '1 1 0' * sz_y, color, alpha, drawflag, fadelerp); + } else { + sz_y = sz_x / textaspect; + drawstring_expanding(pos + eY * (oldsz_y - sz_y) * 0.5, text, '1 1 0' * sz_y, color, alpha, drawflag, fadelerp); + } +} + void drawcolorcodedstring_expanding(vector position, string text, vector scale, float alpha, float flag, float fadelerp) { float sz; @@ -592,6 +614,27 @@ void drawcolorcodedstring_expanding(vector position, string text, vector scale, drawfontscale = '1 1 0'; } +void drawcolorcodedstring_aspect_expanding(vector pos, string text, vector sz, float alpha, float drawflag, float fadelerp) { + vector textsize; + textsize = eX * stringwidth(text, TRUE, '1 1 1' * sz_y) + eY * sz_y; + + float textaspect; + textaspect = textsize_x/textsize_y; + + vector oldsz; + oldsz = sz; + float aspect; + aspect = sz_x/sz_y; + + if(aspect > textaspect) { + sz_x = sz_y * textaspect; + drawcolorcodedstring_expanding(pos + eX * (oldsz_x - sz_x) * 0.5, text, '1 1 0' * sz_y, alpha, drawflag, fadelerp); + } else { + sz_y = sz_x / textaspect; + drawcolorcodedstring_expanding(pos + eY * (oldsz_y - sz_y) * 0.5, text, '1 1 0' * sz_y, alpha, drawflag, fadelerp); + } +} + // this draws the triangles of a model DIRECTLY. Don't expect high performance, really... void PolyDrawModel(entity e) {