123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- /******************************************************************************
- Copyright (C) 2014 by Hugh Bailey <[email protected]>
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- ******************************************************************************/
- #pragma once
- #if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)
- #define SUPPORTS_FRACTIONAL_SCALING
- #endif
- static inline void GetScaleAndCenterPos(int baseCX, int baseCY, int windowCX,
- int windowCY, int &x, int &y,
- float &scale)
- {
- double windowAspect, baseAspect;
- int newCX, newCY;
- windowAspect = double(windowCX) / double(windowCY);
- baseAspect = double(baseCX) / double(baseCY);
- if (windowAspect > baseAspect) {
- scale = float(windowCY) / float(baseCY);
- newCX = int(double(windowCY) * baseAspect);
- newCY = windowCY;
- } else {
- scale = float(windowCX) / float(baseCX);
- newCX = windowCX;
- newCY = int(float(windowCX) / baseAspect);
- }
- x = windowCX / 2 - newCX / 2;
- y = windowCY / 2 - newCY / 2;
- }
- static inline void GetCenterPosFromFixedScale(int baseCX, int baseCY,
- int windowCX, int windowCY,
- int &x, int &y, float scale)
- {
- x = (float(windowCX) - float(baseCX) * scale) / 2.0f;
- y = (float(windowCY) - float(baseCY) * scale) / 2.0f;
- }
- static inline QSize GetPixelSize(QWidget *widget)
- {
- #ifdef SUPPORTS_FRACTIONAL_SCALING
- return widget->size() * widget->devicePixelRatioF();
- #else
- return widget->size() * widget->devicePixelRatio();
- #endif
- }
|