From 181e48c4422a69c94956977d1f8da05ce6384f7a Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Wed, 17 Sep 2014 21:13:18 +0300 Subject: =?UTF-8?q?MAINT-4341=20FIXED=20Pixel=20width=20and=20height=20of?= =?UTF-8?q?=20the=20preview=20is=20not=20matched=20to=20value=20of=20Width?= =?UTF-8?q?=20or=20Height=20text-box=20in=20the=20=E2=80=9CSnapshot=20to?= =?UTF-8?q?=20inventory=E2=80=9D=20window?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- indra/newview/llpanelsnapshot.cpp | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) (limited to 'indra/newview/llpanelsnapshot.cpp') diff --git a/indra/newview/llpanelsnapshot.cpp b/indra/newview/llpanelsnapshot.cpp index 56569e3207..106fb4997e 100755 --- a/indra/newview/llpanelsnapshot.cpp +++ b/indra/newview/llpanelsnapshot.cpp @@ -37,6 +37,19 @@ #include "llsidetraypanelcontainer.h" #include "llviewercontrol.h" // gSavedSettings +const S32 MAX_TEXTURE_SIZE = 512 ; //max upload texture size 512 * 512 + +S32 power_of_two(S32 sz, S32 upper) +{ + S32 res = upper; + while( upper >= sz) + { + res = upper; + upper >>= 1; + } + return res; +} + // virtual BOOL LLPanelSnapshot::postBuild() { @@ -164,8 +177,26 @@ void LLPanelSnapshot::cancel() void LLPanelSnapshot::onCustomResolutionCommit() { LLSD info; - info["w"] = getChild(getWidthSpinnerName())->getValue().asInteger(); - info["h"] = getChild(getHeightSpinnerName())->getValue().asInteger(); + LLSpinCtrl *widthSpinner = getChild(getWidthSpinnerName()); + LLSpinCtrl *heightSpinner = getChild(getHeightSpinnerName()); + if (getName() == "panel_snapshot_inventory") + { + S32 width = widthSpinner->getValue().asInteger(); + width = power_of_two(width, MAX_TEXTURE_SIZE); + info["w"] = width; + widthSpinner->setIncrement(width >> 1); + widthSpinner->forceSetValue(width); + S32 height = heightSpinner->getValue().asInteger(); + height = power_of_two(height, MAX_TEXTURE_SIZE); + heightSpinner->setIncrement(height >> 1); + heightSpinner->forceSetValue(height); + info["h"] = height; + } + else + { + info["w"] = widthSpinner->getValue().asInteger(); + info["h"] = heightSpinner->getValue().asInteger(); + } LLFloaterSnapshot::getInstance()->notify(LLSD().with("custom-res-change", info)); } -- cgit v1.2.3