|
|
@@ -740,18 +740,35 @@ void OBSBasicPreview::ClampAspect(vec3 &tl, vec3 &br, vec2 &size,
|
|
|
stretchHandle == ItemHandle::TopRight ||
|
|
|
stretchHandle == ItemHandle::BottomLeft ||
|
|
|
stretchHandle == ItemHandle::BottomRight) {
|
|
|
- if (aspect < baseAspect)
|
|
|
- size.x = size.y * baseAspect;
|
|
|
- else
|
|
|
- size.y = size.x / baseAspect;
|
|
|
+ if (aspect < baseAspect) {
|
|
|
+ if ((size.y >= 0.0f && size.x >= 0.0f) ||
|
|
|
+ (size.y <= 0.0f && size.x <= 0.0f))
|
|
|
+ size.x = size.y * baseAspect;
|
|
|
+ else
|
|
|
+ size.x = size.y * baseAspect * -1.0f;
|
|
|
+ } else {
|
|
|
+ if ((size.y >= 0.0f && size.x >= 0.0f) ||
|
|
|
+ (size.y <= 0.0f && size.x <= 0.0f))
|
|
|
+ size.y = size.x / baseAspect;
|
|
|
+ else
|
|
|
+ size.y = size.x / baseAspect * -1.0f;
|
|
|
+ }
|
|
|
|
|
|
} else if (stretchHandle == ItemHandle::TopCenter ||
|
|
|
stretchHandle == ItemHandle::BottomCenter) {
|
|
|
- size.x = size.y * baseAspect;
|
|
|
+ if ((size.y >= 0.0f && size.x >= 0.0f) ||
|
|
|
+ (size.y <= 0.0f && size.x <= 0.0f))
|
|
|
+ size.x = size.y * baseAspect;
|
|
|
+ else
|
|
|
+ size.x = size.y * baseAspect * -1.0f;
|
|
|
|
|
|
} else if (stretchHandle == ItemHandle::CenterLeft ||
|
|
|
stretchHandle == ItemHandle::CenterRight) {
|
|
|
- size.y = size.x / baseAspect;
|
|
|
+ if ((size.y >= 0.0f && size.x >= 0.0f) ||
|
|
|
+ (size.y <= 0.0f && size.x <= 0.0f))
|
|
|
+ size.y = size.x / baseAspect;
|
|
|
+ else
|
|
|
+ size.y = size.x / baseAspect * -1.0f;
|
|
|
}
|
|
|
|
|
|
size.x = std::round(size.x);
|