提交 649841e6 编写于 作者: A Alexander Alekhin

Merge pull request #23225 from mshabunin:fix-clang-warnings

...@@ -24,7 +24,7 @@ if(UNIX) ...@@ -24,7 +24,7 @@ if(UNIX)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-function -Wno-missing-braces -Wno-missing-field-initializers") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-function -Wno-missing-braces -Wno-missing-field-initializers")
endif() endif()
if(CV_CLANG) if(CV_CLANG)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-self-assign") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-self-assign -Wno-strict-prototypes")
endif() endif()
endif() endif()
......
...@@ -235,6 +235,10 @@ T* allocSingletonNew() { return new(allocSingletonNewBuffer(sizeof(T))) T(); } ...@@ -235,6 +235,10 @@ T* allocSingletonNew() { return new(allocSingletonNewBuffer(sizeof(T))) T(); }
#include "ipp.h" #include "ipp.h"
#endif #endif
#ifdef HAVE_IPP_IW #ifdef HAVE_IPP_IW
# if defined(__OPENCV_BUILD) && defined(__clang__)
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wstrict-prototypes"
# endif
# if defined(__OPENCV_BUILD) && defined(__GNUC__) && __GNUC__ >= 5 # if defined(__OPENCV_BUILD) && defined(__GNUC__) && __GNUC__ >= 5
# pragma GCC diagnostic push # pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wsuggest-override" # pragma GCC diagnostic ignored "-Wsuggest-override"
...@@ -246,6 +250,9 @@ T* allocSingletonNew() { return new(allocSingletonNewBuffer(sizeof(T))) T(); } ...@@ -246,6 +250,9 @@ T* allocSingletonNew() { return new(allocSingletonNewBuffer(sizeof(T))) T(); }
# if defined(__OPENCV_BUILD) && defined(__GNUC__) && __GNUC__ >= 5 # if defined(__OPENCV_BUILD) && defined(__GNUC__) && __GNUC__ >= 5
# pragma GCC diagnostic pop # pragma GCC diagnostic pop
# endif # endif
# if defined(__OPENCV_BUILD) && defined(__clang__)
# pragma clang diagnostic pop
# endif
#endif #endif
#if IPP_VERSION_X100 >= 201700 #if IPP_VERSION_X100 >= 201700
......
...@@ -664,7 +664,6 @@ static cv::GRunArgs run_py_kernel(cv::detail::PyObjectHolder kernel, ...@@ -664,7 +664,6 @@ static cv::GRunArgs run_py_kernel(cv::detail::PyObjectHolder kernel,
cv::GRunArgs outs; cv::GRunArgs outs;
try try
{ {
int in_idx = 0;
// NB: Doesn't increase reference counter (false), // NB: Doesn't increase reference counter (false),
// because PyObject already have ownership. // because PyObject already have ownership.
// In case exception decrement reference counter. // In case exception decrement reference counter.
...@@ -697,7 +696,6 @@ static cv::GRunArgs run_py_kernel(cv::detail::PyObjectHolder kernel, ...@@ -697,7 +696,6 @@ static cv::GRunArgs run_py_kernel(cv::detail::PyObjectHolder kernel,
util::throw_error(std::logic_error("GFrame isn't supported for custom operation")); util::throw_error(std::logic_error("GFrame isn't supported for custom operation"));
break; break;
} }
++in_idx;
} }
if (ctx.m_state.has_value()) if (ctx.m_state.has_value())
......
...@@ -27,7 +27,7 @@ class GMockExecutable final: public cv::gimpl::GIslandExecutable ...@@ -27,7 +27,7 @@ class GMockExecutable final: public cv::gimpl::GIslandExecutable
m_priv->m_reshape_counter++; m_priv->m_reshape_counter++;
} }
virtual void handleNewStream() override { } virtual void handleNewStream() override { }
virtual void run(std::vector<InObj>&&, std::vector<OutObj>&&) { } virtual void run(std::vector<InObj>&&, std::vector<OutObj>&&) override { }
virtual bool allocatesOutputs() const override virtual bool allocatesOutputs() const override
{ {
return true; return true;
......
...@@ -190,7 +190,7 @@ public: ...@@ -190,7 +190,7 @@ public:
: cv::gapi::wip::GCaptureSource(pipeline) { : cv::gapi::wip::GCaptureSource(pipeline) {
} }
bool pull(cv::gapi::wip::Data& data) { bool pull(cv::gapi::wip::Data& data) override {
if (cv::gapi::wip::GCaptureSource::pull(data)) { if (cv::gapi::wip::GCaptureSource::pull(data)) {
data = cv::MediaFrame::Create<TestMediaBGR>(cv::util::get<cv::Mat>(data)); data = cv::MediaFrame::Create<TestMediaBGR>(cv::util::get<cv::Mat>(data));
return true; return true;
...@@ -232,7 +232,7 @@ public: ...@@ -232,7 +232,7 @@ public:
: cv::gapi::wip::GCaptureSource(pipeline) { : cv::gapi::wip::GCaptureSource(pipeline) {
} }
bool pull(cv::gapi::wip::Data& data) { bool pull(cv::gapi::wip::Data& data) override {
if (cv::gapi::wip::GCaptureSource::pull(data)) { if (cv::gapi::wip::GCaptureSource::pull(data)) {
cv::Mat bgr = cv::util::get<cv::Mat>(data); cv::Mat bgr = cv::util::get<cv::Mat>(data);
cv::Mat y, uv; cv::Mat y, uv;
...@@ -256,7 +256,7 @@ public: ...@@ -256,7 +256,7 @@ public:
: cv::gapi::wip::GCaptureSource(pipeline) { : cv::gapi::wip::GCaptureSource(pipeline) {
} }
bool pull(cv::gapi::wip::Data& data) { bool pull(cv::gapi::wip::Data& data) override {
if (cv::gapi::wip::GCaptureSource::pull(data)) { if (cv::gapi::wip::GCaptureSource::pull(data)) {
cv::Mat bgr = cv::util::get<cv::Mat>(data); cv::Mat bgr = cv::util::get<cv::Mat>(data);
cv::Mat gray; cv::Mat gray;
...@@ -319,7 +319,7 @@ public: ...@@ -319,7 +319,7 @@ public:
return "InvalidSource sucessfuly failed!"; return "InvalidSource sucessfuly failed!";
} }
bool pull(cv::gapi::wip::Data& d) { bool pull(cv::gapi::wip::Data& d) override {
++m_curr_frame_id; ++m_curr_frame_id;
if (m_curr_frame_id > m_num_frames) { if (m_curr_frame_id > m_num_frames) {
return false; return false;
......
...@@ -49,10 +49,10 @@ public: ...@@ -49,10 +49,10 @@ public:
CV_FilterBaseTest( bool _fp_kernel ); CV_FilterBaseTest( bool _fp_kernel );
protected: protected:
int prepare_test_case( int test_case_idx ); int prepare_test_case( int test_case_idx ) CV_OVERRIDE;
int read_params( const cv::FileStorage& fs ); int read_params( const cv::FileStorage& fs ) CV_OVERRIDE;
void get_test_array_types_and_sizes( int test_case_idx, vector<vector<Size> >& sizes, vector<vector<int> >& types ); void get_test_array_types_and_sizes( int test_case_idx, vector<vector<Size> >& sizes, vector<vector<int> >& types ) CV_OVERRIDE;
void get_minmax_bounds( int i, int j, int type, Scalar& low, Scalar& high ); void get_minmax_bounds( int i, int j, int type, Scalar& low, Scalar& high ) CV_OVERRIDE;
Size aperture_size; Size aperture_size;
Point anchor; Point anchor;
int max_aperture_size; int max_aperture_size;
...@@ -689,8 +689,8 @@ public: ...@@ -689,8 +689,8 @@ public:
CV_SmoothBaseTest(); CV_SmoothBaseTest();
protected: protected:
void get_test_array_types_and_sizes( int test_case_idx, vector<vector<Size> >& sizes, vector<vector<int> >& types ); void get_test_array_types_and_sizes( int test_case_idx, vector<vector<Size> >& sizes, vector<vector<int> >& types ) CV_OVERRIDE;
double get_success_error_level( int test_case_idx, int i, int j ); double get_success_error_level( int test_case_idx, int i, int j ) CV_OVERRIDE;
const char* smooth_type; const char* smooth_type;
void dump_test_case(int test_case_idx, std::ostream* out) CV_OVERRIDE void dump_test_case(int test_case_idx, std::ostream* out) CV_OVERRIDE
...@@ -802,10 +802,10 @@ public: ...@@ -802,10 +802,10 @@ public:
CV_GaussianBlurTest(); CV_GaussianBlurTest();
protected: protected:
void prepare_to_validation( int test_case_idx ); void prepare_to_validation( int test_case_idx ) CV_OVERRIDE;
void run_func(); void run_func() CV_OVERRIDE;
void get_test_array_types_and_sizes( int test_case_idx, vector<vector<Size> >& sizes, vector<vector<int> >& types ); void get_test_array_types_and_sizes( int test_case_idx, vector<vector<Size> >& sizes, vector<vector<int> >& types ) CV_OVERRIDE;
double get_success_error_level( int /*test_case_idx*/, int /*i*/, int /*j*/ ); double get_success_error_level( int /*test_case_idx*/, int /*i*/, int /*j*/ ) CV_OVERRIDE;
double sigma; double sigma;
int param1, param2; int param1, param2;
......
...@@ -116,20 +116,22 @@ ...@@ -116,20 +116,22 @@
# endif # endif
#endif #endif
#if defined(__OPENCV_BUILD) && defined(__clang__)
#pragma clang diagnostic ignored "-Winconsistent-missing-override"
#endif
#if defined(__OPENCV_BUILD) && defined(__GNUC__) && __GNUC__ >= 5 #if defined(__OPENCV_BUILD) && defined(__GNUC__) && __GNUC__ >= 5
//#pragma GCC diagnostic push //#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wsuggest-override" #pragma GCC diagnostic ignored "-Wsuggest-override"
#endif #endif
#if defined(__OPENCV_BUILD) && defined(__APPLE__) && defined(__clang__) && ((__clang_major__*100 + __clang_minor__) >= 1301) #if defined(__OPENCV_BUILD) && defined(__clang__) && ((__clang_major__*100 + __clang_minor__) >= 1301)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-copy" #pragma clang diagnostic ignored "-Wdeprecated-copy"
#pragma clang diagnostic ignored "-Winconsistent-missing-override"
#endif #endif
#include "opencv2/ts/ts_gtest.h" #include "opencv2/ts/ts_gtest.h"
#if defined(__OPENCV_BUILD) && defined(__GNUC__) && __GNUC__ >= 5 #if defined(__OPENCV_BUILD) && defined(__GNUC__) && __GNUC__ >= 5
//#pragma GCC diagnostic pop //#pragma GCC diagnostic pop
#endif #endif
#if defined(__OPENCV_BUILD) && defined(__clang__) && ((__clang_major__*100 + __clang_minor__) >= 1301)
#pragma clang diagnostic pop
#endif
#include "opencv2/ts/ts_ext.hpp" #include "opencv2/ts/ts_ext.hpp"
#ifndef GTEST_USES_SIMPLE_RE #ifndef GTEST_USES_SIMPLE_RE
......
...@@ -49,13 +49,13 @@ bool checkBigDataTests(); ...@@ -49,13 +49,13 @@ bool checkBigDataTests();
#undef TEST #undef TEST
#define TEST_(test_case_name, test_name, parent_class, bodyMethodName, BODY_IMPL) \ #define TEST_(test_case_name, test_name, parent_class, bodyMethodName, BODY_ATTR, BODY_IMPL) \
class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) : public parent_class {\ class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) : public parent_class {\
public:\ public:\
GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {}\ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {}\
private:\ private:\
virtual void TestBody() CV_OVERRIDE;\ virtual void TestBody() CV_OVERRIDE;\
virtual void bodyMethodName();\ virtual void bodyMethodName() BODY_ATTR;\
static ::testing::TestInfo* const test_info_ GTEST_ATTRIBUTE_UNUSED_;\ static ::testing::TestInfo* const test_info_ GTEST_ATTRIBUTE_UNUSED_;\
GTEST_DISALLOW_COPY_AND_ASSIGN_(\ GTEST_DISALLOW_COPY_AND_ASSIGN_(\
GTEST_TEST_CLASS_NAME_(test_case_name, test_name));\ GTEST_TEST_CLASS_NAME_(test_case_name, test_name));\
...@@ -74,7 +74,7 @@ bool checkBigDataTests(); ...@@ -74,7 +74,7 @@ bool checkBigDataTests();
void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() BODY_IMPL( #test_case_name "_" #test_name ) \ void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() BODY_IMPL( #test_case_name "_" #test_name ) \
void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::bodyMethodName() void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::bodyMethodName()
#define TEST(test_case_name, test_name) TEST_(test_case_name, test_name, ::testing::Test, Body, CV__TEST_BODY_IMPL) #define TEST(test_case_name, test_name) TEST_(test_case_name, test_name, ::testing::Test, Body,, CV__TEST_BODY_IMPL)
#define CV__TEST_BIGDATA_BODY_IMPL(name) \ #define CV__TEST_BIGDATA_BODY_IMPL(name) \
{ \ { \
...@@ -96,9 +96,9 @@ bool checkBigDataTests(); ...@@ -96,9 +96,9 @@ bool checkBigDataTests();
// Special type of tests which require / use or validate processing of huge amount of data (>= 2Gb) // Special type of tests which require / use or validate processing of huge amount of data (>= 2Gb)
#if defined(_M_X64) || defined(_M_ARM64) || defined(__x86_64__) || defined(__aarch64__) #if defined(_M_X64) || defined(_M_ARM64) || defined(__x86_64__) || defined(__aarch64__)
#define BIGDATA_TEST(test_case_name, test_name) TEST_(BigData_ ## test_case_name, test_name, ::testing::Test, Body, CV__TEST_BIGDATA_BODY_IMPL) #define BIGDATA_TEST(test_case_name, test_name) TEST_(BigData_ ## test_case_name, test_name, ::testing::Test, Body,, CV__TEST_BIGDATA_BODY_IMPL)
#else #else
#define BIGDATA_TEST(test_case_name, test_name) TEST_(BigData_ ## test_case_name, DISABLED_ ## test_name, ::testing::Test, Body, CV__TEST_BIGDATA_BODY_IMPL) #define BIGDATA_TEST(test_case_name, test_name) TEST_(BigData_ ## test_case_name, DISABLED_ ## test_name, ::testing::Test, Body,, CV__TEST_BIGDATA_BODY_IMPL)
#endif #endif
#undef TEST_F #undef TEST_F
...@@ -128,13 +128,13 @@ bool checkBigDataTests(); ...@@ -128,13 +128,13 @@ bool checkBigDataTests();
void GTEST_TEST_CLASS_NAME_(test_fixture, test_name)::Body() void GTEST_TEST_CLASS_NAME_(test_fixture, test_name)::Body()
// Don't use directly // Don't use directly
#define CV__TEST_P(test_case_name, test_name, bodyMethodName, BODY_IMPL/*(name_str)*/) \ #define CV__TEST_P(test_case_name, test_name, bodyMethodName, BODY_ATTR, BODY_IMPL/*(name_str)*/) \
class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \
: public test_case_name { \ : public test_case_name { \
public: \ public: \
GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \
private: \ private: \
virtual void bodyMethodName(); \ virtual void bodyMethodName() BODY_ATTR; \
virtual void TestBody() CV_OVERRIDE; \ virtual void TestBody() CV_OVERRIDE; \
static int AddToRegistry() { \ static int AddToRegistry() { \
::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
...@@ -160,7 +160,7 @@ bool checkBigDataTests(); ...@@ -160,7 +160,7 @@ bool checkBigDataTests();
void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::bodyMethodName() void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::bodyMethodName()
#undef TEST_P #undef TEST_P
#define TEST_P(test_case_name, test_name) CV__TEST_P(test_case_name, test_name, Body, CV__TEST_BODY_IMPL) #define TEST_P(test_case_name, test_name) CV__TEST_P(test_case_name, test_name, Body,, CV__TEST_BODY_IMPL)
#define CV_TEST_EXPECT_EXCEPTION_MESSAGE(statement, msg) \ #define CV_TEST_EXPECT_EXCEPTION_MESSAGE(statement, msg) \
......
...@@ -551,7 +551,7 @@ void PrintTo(const Size& sz, ::std::ostream* os); ...@@ -551,7 +551,7 @@ void PrintTo(const Size& sz, ::std::ostream* os);
// EXPECT_TRUE(foo.StatusIsOK()); // EXPECT_TRUE(foo.StatusIsOK());
// } // }
#define PERF_TEST(test_case_name, test_name)\ #define PERF_TEST(test_case_name, test_name)\
TEST_(test_case_name, test_name, ::perf::TestBase, PerfTestBody, CV__PERF_TEST_BODY_IMPL) TEST_(test_case_name, test_name, ::perf::TestBase, PerfTestBody, CV_OVERRIDE, CV__PERF_TEST_BODY_IMPL)
// Defines a performance test that uses a test fixture. // Defines a performance test that uses a test fixture.
// //
...@@ -595,7 +595,7 @@ void PrintTo(const Size& sz, ::std::ostream* os); ...@@ -595,7 +595,7 @@ void PrintTo(const Size& sz, ::std::ostream* os);
// //
// @Note PERF_TEST_P() below violates behavior of original Google Tests - there is no tests instantiation in original TEST_P() // @Note PERF_TEST_P() below violates behavior of original Google Tests - there is no tests instantiation in original TEST_P()
// This macro is intended for usage with separate INSTANTIATE_TEST_CASE_P macro // This macro is intended for usage with separate INSTANTIATE_TEST_CASE_P macro
#define PERF_TEST_P_(test_case_name, test_name) CV__TEST_P(test_case_name, test_name, PerfTestBody, CV__PERF_TEST_BODY_IMPL) #define PERF_TEST_P_(test_case_name, test_name) CV__TEST_P(test_case_name, test_name, PerfTestBody, CV_OVERRIDE, CV__PERF_TEST_BODY_IMPL)
// Defines a parametrized performance test. // Defines a parametrized performance test.
// //
...@@ -628,7 +628,7 @@ void PrintTo(const Size& sz, ::std::ostream* os); ...@@ -628,7 +628,7 @@ void PrintTo(const Size& sz, ::std::ostream* os);
protected:\ protected:\
virtual void PerfTestBody();\ virtual void PerfTestBody();\
};\ };\
CV__TEST_P(fixture##_##name, name, PerfTestBodyDummy, CV__PERF_TEST_BODY_IMPL){} \ CV__TEST_P(fixture##_##name, name, PerfTestBodyDummy,, CV__PERF_TEST_BODY_IMPL){} \
INSTANTIATE_TEST_CASE_P(/*none*/, fixture##_##name, params);\ INSTANTIATE_TEST_CASE_P(/*none*/, fixture##_##name, params);\
void fixture##_##name::PerfTestBody() void fixture##_##name::PerfTestBody()
......
...@@ -2104,8 +2104,6 @@ struct KeypointComparator ...@@ -2104,8 +2104,6 @@ struct KeypointComparator
{ {
return cmp(pts_[idx1], pts_[idx2]); return cmp(pts_[idx1], pts_[idx2]);
} }
private:
KeypointComparator& operator=(const KeypointComparator&) = delete;
}; };
}//namespace }//namespace
...@@ -2119,7 +2117,8 @@ void perf::sort(std::vector<cv::KeyPoint>& pts, cv::InputOutputArray descriptors ...@@ -2119,7 +2117,8 @@ void perf::sort(std::vector<cv::KeyPoint>& pts, cv::InputOutputArray descriptors
for (int i = 0; i < desc.rows; ++i) for (int i = 0; i < desc.rows; ++i)
idxs[i] = i; idxs[i] = i;
std::sort(idxs.data(), idxs.data() + desc.rows, KeypointComparator(pts)); comparators::KeypointGreater cmp;
std::sort(idxs.data(), idxs.data() + desc.rows, [&](int lhs, int rhs){ return cmp(pts[lhs], pts[rhs]); });
std::vector<cv::KeyPoint> spts(pts.size()); std::vector<cv::KeyPoint> spts(pts.size());
cv::Mat sdesc(desc.size(), desc.type()); cv::Mat sdesc(desc.size(), desc.type());
......
...@@ -198,7 +198,7 @@ DepthFrameUnpacker::DepthFrameUnpacker(){ ...@@ -198,7 +198,7 @@ DepthFrameUnpacker::DepthFrameUnpacker(){
outputDataBuf_ = new uint8_t[OUT_DATA_SIZE]; outputDataBuf_ = new uint8_t[OUT_DATA_SIZE];
} }
DepthFrameUnpacker::~DepthFrameUnpacker(){ DepthFrameUnpacker::~DepthFrameUnpacker() {
delete[] outputDataBuf_; delete[] outputDataBuf_;
} }
......
...@@ -67,7 +67,7 @@ public: ...@@ -67,7 +67,7 @@ public:
class DepthFrameProcessor: public IFrameProcessor { class DepthFrameProcessor: public IFrameProcessor {
public: public:
DepthFrameProcessor(const OBExtensionParam& parma); DepthFrameProcessor(const OBExtensionParam& parma);
virtual ~DepthFrameProcessor() noexcept; virtual ~DepthFrameProcessor();
virtual void process(Frame* frame) override; virtual void process(Frame* frame) override;
private: private:
...@@ -78,7 +78,7 @@ private: ...@@ -78,7 +78,7 @@ private:
class DepthFrameUnpacker: public IFrameProcessor { class DepthFrameUnpacker: public IFrameProcessor {
public: public:
DepthFrameUnpacker(); DepthFrameUnpacker();
virtual ~DepthFrameUnpacker() noexcept; virtual ~DepthFrameUnpacker();
virtual void process(Frame* frame) override; virtual void process(Frame* frame) override;
private: private:
const uint32_t OUT_DATA_SIZE = 1280*800*2; const uint32_t OUT_DATA_SIZE = 1280*800*2;
......
...@@ -29,7 +29,7 @@ struct Data ...@@ -29,7 +29,7 @@ struct Data
bool doTrain(const Mat samples, const Mat responses, Mat &weights, float &shift); bool doTrain(const Mat samples, const Mat responses, Mat &weights, float &shift);
//function finds two points for drawing line (wx = 0) //function finds two points for drawing line (wx = 0)
bool findPointsForLine(const Mat &weights, float shift, Point points[], int width, int height); bool findPointsForLine(const Mat &weights, float shift, Point points[2], int width, int height);
// function finds cross point of line (wx = 0) and segment ( (y = HEIGHT, 0 <= x <= WIDTH) or (x = WIDTH, 0 <= y <= HEIGHT) ) // function finds cross point of line (wx = 0) and segment ( (y = HEIGHT, 0 <= x <= WIDTH) or (x = WIDTH, 0 <= y <= HEIGHT) )
bool findCrossPointWithBorders(const Mat &weights, float shift, const std::pair<Point,Point> &segment, Point &crossPoint); bool findCrossPointWithBorders(const Mat &weights, float shift, const std::pair<Point,Point> &segment, Point &crossPoint);
......
...@@ -157,7 +157,7 @@ static void onMouse(int event, int x, int y, int, void*) ...@@ -157,7 +157,7 @@ static void onMouse(int event, int x, int y, int, void*)
{ {
for (int i = 0; i < 4; ++i) for (int i = 0; i < 4; ++i)
{ {
if ((event == EVENT_LBUTTONDOWN) & ((abs(roi_corners[i].x - x) < 10)) & (abs(roi_corners[i].y - y) < 10)) if ((event == EVENT_LBUTTONDOWN) && ((abs(roi_corners[i].x - x) < 10)) && (abs(roi_corners[i].y - y) < 10))
{ {
selected_corner_index = i; selected_corner_index = i;
dragging = true; dragging = true;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册