first commit

This commit is contained in:
2026-02-21 17:11:31 +09:00
commit 18b4338361
4001 changed files with 365464 additions and 0 deletions

View File

@@ -0,0 +1,66 @@
#include "rm_widget_zoom_pos.h"
#include <QPainter>
#include "../rm_include.h"
#include "../core/rm_math.h"
RMWidgetZoomPos::RMWidgetZoomPos(QWidget *parent) : QWidget(parent)
{
_x = 0.25;
_y = 0.25;
_startX = 0.25;
_startY = 0.25;
}
#if (USE_ZOOM_WH_RATIO)
void RMWidgetZoomPos::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
QPen pen(Qt::red);
_painter.begin(this);
_painter.setPen(pen);
_painter.setRenderHint(QPainter::Antialiasing, false);
// ROI 는 영상/화면 비율과 관계없으나 표시 영역은 관계가 있음.
// 사용할 수 있는 넓이 = height * WHR (width/height ratio)
int widthDiff = (size().width() - (int)(((double)size().height()) * _whr));
//QRect max = QRect(widthDiff,0,size.width()-widthDiff,size().height());
QSize s = QSize((size().width() - widthDiff) / 2,size().height() / 2);
// ROI 로 계산한 영역
QRect box = QRect(_x * size().width() + (widthDiff / 2),_y * size().height(),s.width(),s.height());
if(box.right() >= (size().width() - (widthDiff / 2)))
{
box = QRect(box.x() -(widthDiff / 2),box.y(),box.width(),box.height());
}
// 비디오 영역도 처리
//box = QRectAspect(box,_whr);
_painter.drawRect(box);
_painter.end();
}
#else
void RMWidgetZoomPos::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
QPen pen(Qt::red);
_painter.begin(this);
_painter.setPen(pen);
_painter.setRenderHint(QPainter::Antialiasing, false);
QSize s = size() / 2;
QRect box = QRect(_x * size().width(),_y * size().height(),s.width(),s.height());
_painter.drawRect(box);
_painter.end();
}
#endif // #if (USE_ZOOM_WH_RATIO)
void RMWidgetZoomPos::setPos(float x, float y)
{
//qInfo() << whr;
_x = MIN(MAX(_startX + x,0),0.5);
_y = MIN(MAX(_startY + y,0),0.5);
update();
}